如何將 Docker 容器複製/移動到另一台主機
![如何將 Docker 容器複製/移動到另一台主機](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/docker-move-containers-featured-640x375.webp)
![一個人在電腦桌上工作的照片。 一個人在電腦桌上工作的照片。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-00-featured-image-800x450-1.webp)
由於 Docker 容器是軟體的小盒子,因此您可以輕鬆地在電腦之間複製和移動它們。您可能在本機上使用 Docker 實例,並決定將其移至更強大的伺服器。或者,您可能只想將自訂容器部署在多台電腦上,「複製並貼上」它。其他時候,您可能對雲端運算提供者不滿意並希望切換到其他雲端運算提供者。在這裡,我們向您展示如何將現有的 Docker 容器映像和資料磁碟區從一台 Linux 主機移至另一台。
從來源主機儲存容器鏡像
首先列出系統上運行的可用 Docker 容器。就我而言,我想將 Nginx Docker 容器匯出到新機器:
![突出顯示系統可用 Docker 容器的終端。 突出顯示系統可用 Docker 容器的終端。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-01-list-containers-running.webp)
找到您要複製的容器,然後停止實例:
![顯示 docker stop 指令輸出的終端機。 顯示 docker stop 指令輸出的終端機。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-02-stop-running-container.webp)
Docker 容器是由通用的初始映像建構的。隨著時間的推移,您可以將自己的變更新增至此基礎映像。在容器內運行的進程也可能保存自己的資料或進行其他變更。要保留所有這些,請將容器的當前狀態提交到新映像:
![一個終端,顯示 docker commit 命令的輸出,該命令從目前運行的映像建立一個新映像。 一個終端,顯示 docker commit 命令的輸出,該命令從目前運行的映像建立一個新映像。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-03-commit-current-container-to-image.webp)
請注意,如果實例目前正在運行,此操作將在保存其內容時暫停它。如果這是一個問題,您可以透過輸入來避免這種暫停docker commit -p=false NAME_OF_INSTANCE mycontainerimage
。但是,除非絕對必要,否則不要這樣做。在這種情況下,建立資料不一致/不完整的影像的可能性會增加。
現在,將新提交的 Docker 容器映像儲存到存檔檔案:
使用您喜歡的文件傳輸方法並複製您的. tar 檔案到要將 Docker 容器移到的主機。例如,以下命令使用 scp 傳輸我的 Nginx Docker 映像:
從容器匯出 Docker 卷
保存 Docker 映像的缺點之一是它不附帶您在容器旁邊設定的 Docker 附件。這包括任何網路綁定安裝以及您為儲存持久性資料而建立的磁碟區。
若要正確匯出資料量,請先在本機電腦上安裝 Git:
執行以下命令下載 Docker 的磁碟區匯出腳本:
確保匯出腳本具有正確的權限位,然後將其複製到電腦的“/usr/local/bin:”
測試您的腳本是否正常運作,然後提取容器的所有關聯磁碟區:
![顯示備份 Docker 容器的任何關聯資料卷的過程的終端。 顯示備份 Docker 容器的任何關聯資料卷的過程的終端。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-04-backup-volume-script.webp)
將新歸檔的 Docker 磁碟區檔案傳送到遠端電腦:
在目標主機上載入容器映像
登入遠端主機,然後執行以下命令將其載入到遠端電腦的 Docker 守護程序:
用於docker create
使用來源電腦中的原始運作標誌重新初始化 Docker 容器映像。例如,我的 Nginx Docker 容器最初將連接埠 80 對應到我的主機的連接埠 8080:
運行新匯入的 Docker 容器:
透過列出系統中的所有活動容器來確認匯入的映像正常運作:
![顯示在不同系統上執行的相同 Docker 容器映像的終端。 顯示在不同系統上執行的相同 Docker 容器映像的終端。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-05-check-containers-running.webp)
將 Docker 磁碟區匯入容器中
導入一個. tar Docker 磁碟區文件,首先在新主機上下載 Git:
就像您的原始系統一樣,下載 docker-volume.sh 幫助程式腳本,將其權限位元設為“執行”,然後將其複製到新電腦的“/usr/local/bin”目錄。
![顯示取得和安裝 Docker Volume 腳本以備份與容器關聯的資料的過程的終端。 顯示取得和安裝 Docker Volume 腳本以備份與容器關聯的資料的過程的終端。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-06-install-volume-backup-script-sample.webp)
使用匯出的映像檔建立新的 Docker 容器:
使用原始腳本執行 docker-volume.sh 腳本。 tar 檔案以將其載入到新系統的 Docker 守護程式:
透過執行以下命令啟動新的 Docker 容器:
透過查看其內部配置資料來測試容器是否正確載入磁碟區:
![終端機突出顯示匯入到新電腦的體積資料。 終端機突出顯示匯入到新電腦的體積資料。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-07-highlight-docker-volume-location.webp)
傳輸圖像而不創建文件
有時您可能會想跳過建立mycontainerimage.tar.gz
文件。也許您沒有足夠的磁碟空間,因為容器中有大量資料。您可以透過一條指令在目標主機上儲存、傳輸和載入映像。執行docker commit
上面討論的命令後,您可以使用以下命令:
它也應該在 Windows 上運行,因為它現在有一個內建的 SSH 客戶端(不再需要 PuTTY)。
繼續執行docker create
適用於您的情況的命令。
![顯示透過 SSH 管道移動映像後建立新 Docker 容器的過程的終端。 顯示透過 SSH 管道移動映像後建立新 Docker 容器的過程的終端。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-08-sample-container-creation-command.webp)
docker start
最後,透過執行後接容器名稱來啟動新匯入的 Docker 容器。
![顯示啟動新容器並確認其正常工作的過程的終端。 顯示啟動新容器並確認其正常工作的過程的終端。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-09-sample-container-run-check-import.webp)
使用 Docker Compose 移動整個 Docker 部署
借助其 Compose 插件,Docker 可以建置、配置和運行複雜的程序,而無需擔心伺服器的底層軟體堆疊。這反過來又允許您跨不同的 Linux 系統建立可重複的應用程式部署。
要開始將現有 Docker 設定遷移到 Docker Compose,請先確保其外掛程式目前位於您的系統中:
在您的主目錄中為 Docker Compose 安裝建立一個新資料夾:
使用您最喜歡的文字編輯器為您的應用程式建立一個「docker-compose.yml」檔案:
將以下程式碼區塊貼到您的 Compose 檔案中,然後根據您的特定需求進行調整:
儲存新的 Compose 文件,然後執行以下命令來啟動它:
最後,測試您的 Compose 部署是否正常運作。就我而言,我將透過開啟 Web 瀏覽器並導航至「localhost:8080」來測試我的 Nginx Docker 容器。
![顯示匯入的 Nginx Docker 容器在其新機器主機上正常運作的螢幕截圖。 顯示匯入的 Nginx Docker 容器在其新機器主機上正常運作的螢幕截圖。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/06/copy-move-docker-container-linux-10-sample-nginx-container-running-imported-data-volume.webp)
學習如何將 Docker 容器複製並移動到其他 Linux 主機只是您可以使用電腦執行的少數任務之一。使用 Docker 在 Linux 上安裝 Minecraft 伺服器,探索這個奇妙的自架世界。
圖片來源:Max Duzij,來自 Unsplash。所有修改和螢幕截圖均由 Ramces Red 進行。
發佈留言