Jak skopiować/przenieść kontener Docker do innego hosta
Ponieważ kontenery Dockera to małe pudełka z oprogramowaniem, można je łatwo kopiować i przenosić z komputera na komputer. Być może pracowałeś na instancji Docker na swoim komputerze lokalnym i zdecydowałeś się przenieść ją na mocniejszy serwer. A może po prostu chcesz wdrożyć swój niestandardowy kontener na wielu komputerach, „skopiuj go i wklej”. Innym razem możesz być niezadowolony z dostawcy usług w chmurze i chcieć przejść na innego. Tutaj pokazujemy, jak przenieść istniejący obraz kontenera Docker i woluminy danych z jednego hosta z systemem Linux na inny.
Zapisz obraz kontenera z hosta źródłowego
Zacznij od wylistowania dostępnych kontenerów Docker działających w Twoim systemie. W moim przypadku chcę wyeksportować kontener Docker Nginx na nową maszynę:
Znajdź kontener, który chcesz skopiować, a następnie zatrzymaj instancję:
Kontener Docker jest budowany z ogólnego, początkowego obrazu. Z czasem dodajesz własne zmiany do tego obrazu bazowego. Procesy działające wewnątrz kontenera mogą również zapisywać własne dane lub wprowadzać inne zmiany. Aby zachować to wszystko, zatwierdź bieżący stan kontenera w nowym obrazie:
Pamiętaj, że jeśli instancja jest aktualnie uruchomiona, ta akcja wstrzyma ją do czasu zapisania jej zawartości. Jeśli stanowi to problem, możesz uniknąć tej pauzy, wprowadzając docker commit -p=false NAME_OF_INSTANCE mycontainerimage
zamiast tego. Nie rób tego jednak, jeśli nie jest to absolutnie konieczne. W tym przypadku wzrasta ryzyko utworzenia obrazu z niespójnymi/niekompletnymi danymi.
Teraz zapisz nowo zatwierdzony obraz kontenera Docker w pliku archiwum:
Użyj preferowanej metody przesyłania plików i skopiuj plik. tar na host, na który chcesz przenieść kontener Docker. Na przykład następujące polecenie przesyła mój obraz Dockera Nginx za pomocą scp:
Eksportowanie woluminu Docker z kontenera
Jedną z wad zapisywania obrazu Docker jest to, że nie zawiera on akcesoriów Docker, które skonfigurowałeś wraz ze swoim kontenerem. Obejmuje to wszelkie montowania powiązań sieciowych i woluminy, które utworzyłeś, aby przechowywać swoje trwałe dane.
Aby poprawnie wyeksportować wolumen danych, najpierw zainstaluj Git na swoim komputerze lokalnym:
Uruchom następujące polecenie, aby pobrać skrypt eksportu woluminu dla Dockera:
Upewnij się, że skrypt eksportu ma odpowiednie bity uprawnień, a następnie skopiuj go do katalogu „/usr/local/bin” na swoim komputerze.
Sprawdź, czy skrypt działa poprawnie, a następnie wyodrębnij wszystkie powiązane woluminy z kontenerem:
Wyślij nowo zarchiwizowane pliki woluminu Docker na swój komputer zdalny:
Załaduj obraz kontenera na hoście docelowym
Zaloguj się do zdalnego hosta, a następnie uruchom następujące polecenie, aby załadować go do demona Docker na komputerze zdalnym:
Służy docker create
do ponownego inicjowania obrazu kontenera Docker przy użyciu oryginalnych flag uruchamiania z maszyny źródłowej. Na przykład mój kontener Docker Nginx pierwotnie miał port 80 zmapowany na port 8080 mojego komputera hosta:
Uruchom nowo zaimportowany kontener Docker:
Potwierdź, że zaimportowany obraz działa prawidłowo, wypisując wszystkie aktywne kontenery w systemie:
Importowanie woluminu Docker do kontenera
Aby zaimportować plik tar woluminu Dockera, najpierw pobierz Git na swoim nowym hoście:
Podobnie jak w przypadku oryginalnego systemu, pobierz skrypt pomocniczy docker-volume.sh, ustaw jego bity uprawnień na „execute”, a następnie skopiuj go do katalogu „/usr/local/bin” na nowym komputerze.
Utwórz nowy kontener Docker, korzystając z wyeksportowanego pliku obrazu:
Uruchom skrypt docker-volume.sh przy użyciu oryginalnego pliku .tar, aby załadować go do demona Docker w nowym systemie:
Uruchom nowy kontener Docker, uruchamiając następujące polecenie:
Sprawdź, czy kontener prawidłowo ładuje wolumin, sprawdzając jego wewnętrzne dane konfiguracyjne:
Przenieś obraz bez tworzenia pliku
Czasami możesz chcieć pominąć tworzenie mycontainerimage.tar.gz
pliku. Być może nie masz wystarczającej ilości miejsca na dysku, ponieważ kontener zawiera dużo danych. Możesz zapisać, przenieść i załadować obraz na hoście docelowym za pomocą jednego polecenia. Po uruchomieniu docker commit
polecenia omówionego powyżej możesz użyć tego:
Powinno działać również w systemie Windows, ponieważ ma teraz wbudowanego klienta SSH (PuTTY nie jest już potrzebny).
Kontynuuj polecenie docker create
, które ma zastosowanie w Twojej sytuacji.
Na koniec uruchom nowo zaimportowany kontener Docker, uruchamiając polecenie docker start
i wpisując nazwę kontenera.
Przenoszenie całego wdrożenia Docker za pomocą Docker Compose
Dzięki wtyczce Compose Docker umożliwia budowanie, konfigurowanie i uruchamianie złożonych programów bez martwienia się o bazowy stos oprogramowania serwera. To z kolei pozwala na budowanie powtarzalnych wdrożeń aplikacji w różnych systemach Linux.
Aby rozpocząć migrację istniejącej konfiguracji Docker do Docker Compose, najpierw upewnij się, że odpowiednia wtyczka znajduje się obecnie w systemie:
Utwórz nowy folder w katalogu domowym dla instalacji Docker Compose:
Użyj swojego ulubionego edytora tekstu, aby utworzyć plik „docker-compose.yml” dla swojej aplikacji:
Wklej poniższy blok kodu do pliku Compose, a następnie dostosuj go do swoich potrzeb:
Zapisz nowy plik Compose, a następnie uruchom następujące polecenie, aby go uruchomić:
Na koniec sprawdź, czy wdrożenie Compose działa prawidłowo. W moim przypadku przetestuję kontener Nginx Docker, otwierając przeglądarkę internetową i przechodząc do „localhost:8080”.
Nauczenie się, jak kopiować i przenosić kontener Docker na inne hosty z systemem Linux, to tylko jedno z niewielu zadań, które możesz wykonać na swoim komputerze. Odkryj ten wspaniały świat samodzielnego hostingu, instalując serwer Minecraft w systemie Linux za pomocą Dockera.
Źródło obrazu: Max Duzij przez Unsplash . Wszystkie zmiany i zrzuty ekranu autorstwa Ramces Red.
Dodaj komentarz