Jak skopiować/przenieść kontener Docker do innego hosta

Jak skopiować/przenieść kontener Docker do innego hosta
Zdjęcie osoby pracującej przy biurku komputerowym.

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ę:

Terminal podświetlający dostępne kontenery Docker dla systemu.

Znajdź kontener, który chcesz skopiować, a następnie zatrzymaj instancję:

Terminal pokazujący dane wyjściowe polecenia docker stop.

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:

Terminal pokazujący dane wyjściowe polecenia docker commit tworzącego nowy obraz z aktualnie uruchomionego.

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 mycontainerimagezamiast 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:

Terminal pokazujący proces tworzenia kopii zapasowej wszystkich powiązanych woluminów danych dla kontenera Docker.

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 createdo 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:

Terminal pokazujący ten sam obraz kontenera Docker uruchomiony na innym 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.

Terminal pokazujący proces uzyskiwania i instalowania skryptu Docker Volume służącego do tworzenia kopii zapasowych danych powiązanych z kontenerami.

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:

Terminal podświetlający dane zaimportowanego wolumenu na nowym komputerze.

Przenieś obraz bez tworzenia pliku

Czasami możesz chcieć pominąć tworzenie mycontainerimage.tar.gzpliku. 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 commitpolecenia 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.

Terminal pokazujący proces tworzenia nowego kontenera Docker po przesłaniu jego obrazu przez kanał SSH.

Na koniec uruchom nowo zaimportowany kontener Docker, uruchamiając polecenie docker starti wpisując nazwę kontenera.

Terminal pokazujący proces uruchamiania nowego kontenera i potwierdzający jego prawidłowe działanie.

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”.

Zrzut ekranu przedstawiający zaimportowany kontener Nginx Docker działający prawidłowo na nowym komputerze-hoście.

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

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *