Jak skopiować/przenieść kontener Docker do innego hosta
![Jak skopiować/przenieść kontener Docker do innego hosta](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/docker-move-containers-featured-640x375.webp)
![Zdjęcie osoby pracującej przy biurku komputerowym. Zdjęcie osoby pracującej przy biurku komputerowym.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-00-featured-image-800x450-1.webp)
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. Terminal podświetlający dostępne kontenery Docker dla systemu.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-01-list-containers-running.webp)
Znajdź kontener, który chcesz skopiować, a następnie zatrzymaj instancję:
![Terminal pokazujący dane wyjściowe polecenia docker stop. Terminal pokazujący dane wyjściowe polecenia docker stop.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-02-stop-running-container.webp)
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. Terminal pokazujący dane wyjściowe polecenia docker commit tworzącego nowy obraz z aktualnie uruchomionego.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-03-commit-current-container-to-image.webp)
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:
![Terminal pokazujący proces tworzenia kopii zapasowej wszystkich powiązanych woluminów danych dla kontenera Docker. Terminal pokazujący proces tworzenia kopii zapasowej wszystkich powiązanych woluminów danych dla kontenera Docker.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-04-backup-volume-script.webp)
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:
![Terminal pokazujący ten sam obraz kontenera Docker uruchomiony na innym systemie. Terminal pokazujący ten sam obraz kontenera Docker uruchomiony na innym systemie.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-05-check-containers-running.webp)
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. Terminal pokazujący proces uzyskiwania i instalowania skryptu Docker Volume służącego do tworzenia kopii zapasowych danych powiązanych z kontenerami.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-06-install-volume-backup-script-sample.webp)
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. Terminal podświetlający dane zaimportowanego wolumenu na nowym komputerze.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-07-highlight-docker-volume-location.webp)
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.
![Terminal pokazujący proces tworzenia nowego kontenera Docker po przesłaniu jego obrazu przez kanał SSH. Terminal pokazujący proces tworzenia nowego kontenera Docker po przesłaniu jego obrazu przez kanał SSH.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-08-sample-container-creation-command.webp)
Na koniec uruchom nowo zaimportowany kontener Docker, uruchamiając polecenie docker start
i wpisując nazwę kontenera.
![Terminal pokazujący proces uruchamiania nowego kontenera i potwierdzający jego prawidłowe działanie. Terminal pokazujący proces uruchamiania nowego kontenera i potwierdzający jego prawidłowe działanie.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-09-sample-container-run-check-import.webp)
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. Zrzut ekranu przedstawiający zaimportowany kontener Nginx Docker działający prawidłowo na nowym komputerze-hoście.](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-10-sample-nginx-container-running-imported-data-volume.webp)
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