如何將 Docker 容器複製/移動到另一台主機

如何將 Docker 容器複製/移動到另一台主機
一個人在電腦桌上工作的照片。

由於 Docker 容器是軟體的小盒子,因此您可以輕鬆地在電腦之間複製和移動它們。您可能在本機上使用 Docker 實例,並決定將其移至更強大的伺服器。或者,您可能只想將自訂容器部署在多台電腦上,「複製並貼上」它。其他時候,您可能對雲端運算提供者不滿意並希望切換到其他雲端運算提供者。在這裡,我們向您展示如何將現有的 Docker 容器映像和資料磁碟區從一台 Linux 主機移至另一台。

從來源主機儲存容器鏡像

首先列出系統上運行的可用 Docker 容器。就我而言,我想將 Nginx Docker 容器匯出到新機器:

突出顯示系統可用 Docker 容器的終端。

找到您要複製的容器,然後停止實例:

顯示 docker stop 指令輸出的終端機。

Docker 容器是由通用的初始映像建構的。隨著時間的推移,您可以將自己的變更新增至此基礎映像。在容器內運行的進程也可能保存自己的資料或進行其他變更。要保留所有這些,請將容器的當前狀態提交到新映像:

一個終端,顯示 docker commit 命令的輸出,該命令從目前運行的映像建立一個新映像。

請注意,如果實例目前正在運行,此操作將在保存其內容時暫停它。如果這是一個問題,您可以透過輸入來避免這種暫停docker commit -p=false NAME_OF_INSTANCE mycontainerimage。但是,除非絕對必要,否則不要這樣做。在這種情況下,建立資料不一致/不完整的影像的可能性會增加。

現在,將新提交的 Docker 容器映像儲存到存檔檔案:

使用您喜歡的文件傳輸方法並複製您的. tar 檔案到要將 Docker 容器移到的主機。例如,以下命令使用 scp 傳輸我的 Nginx Docker 映像:

從容器匯出 Docker 卷

保存 Docker 映像的缺點之一是它不附帶您在容器旁邊設定的 Docker 附件。這包括任何網路綁定安裝以及您為儲存持久性資料而建立的磁碟區。

若要正確匯出資料量,請先在本機電腦上安裝 Git:

執行以下命令下載 Docker 的磁碟區匯出腳本:

確保匯出腳本具有正確的權限位,然後將其複製到電腦的“/usr/local/bin:”

測試您的腳本是否正常運作,然後提取容器的所有關聯磁碟區:

顯示備份 Docker 容器的任何關聯資料卷的過程的終端。

將新歸檔的 Docker 磁碟區檔案傳送到遠端電腦:

在目標主機上載入容器映像

登入遠端主機,然後執行以下命令將其載入到遠端電腦的 Docker 守護程序:

用於docker create使用來源電腦中的原始運作標誌重新初始化 Docker 容器映像。例如,我的 Nginx Docker 容器最初將連接埠 80 對應到我的主機的連接埠 8080:

運行新匯入的 Docker 容器:

透過列出系統中的所有活動容器來確認匯入的映像正常運作:

顯示在不同系統上執行的相同 Docker 容器映像的終端。

將 Docker 磁碟區匯入容器中

導入一個. tar Docker 磁碟區文件,首先在新主機上下載 Git:

就像您的原始系統一樣,下載 docker-volume.sh 幫助程式腳本,將其權限位元設為“執行”,然後將其複製到新電腦的“/usr/local/bin”目錄。

顯示取得和安裝 Docker Volume 腳本以備份與容器關聯的資料的過程的終端。

使用匯出的映像檔建立新的 Docker 容器:

使用原始腳本執行 docker-volume.sh 腳本。 tar 檔案以將其載入到新系統的 Docker 守護程式:

透過執行以下命令啟動新的 Docker 容器:

透過查看其內部配置資料來測試容器是否正確載入磁碟區:

終端機突出顯示匯入到新電腦的體積資料。

傳輸圖像而不創建文件

有時您可能會想跳過建立mycontainerimage.tar.gz文件。也許您沒有足夠的磁碟空間,因為容器中有大量資料。您可以透過一條指令在目標主機上儲存、傳輸和載入映像。執行docker commit上面討論的命令後,您可以使用以下命令:

它也應該在 Windows 上運行,因為它現在有一個內建的 SSH 客戶端(不再需要 PuTTY)。

繼續執行docker create適用於您的情況的命令。

顯示透過 SSH 管道移動映像後建立新 Docker 容器的過程的終端。

docker start最後,透過執行後接容器名稱來啟動新匯入的 Docker 容器。

顯示啟動新容器並確認其正常工作的過程的終端。

使用 Docker Compose 移動整個 Docker 部署

借助其 Compose 插件,Docker 可以建置、配置和運行複雜的程序,而無需擔心伺服器的底層軟體堆疊。這反過來又允許您跨不同的 Linux 系統建立可重複的應用程式部署。

要開始將現有 Docker 設定遷移到 Docker Compose,請先確保其外掛程式目前位於您的系統中:

在您的主目錄中為 Docker Compose 安裝建立一個新資料夾:

使用您最喜歡的文字編輯器為您的應用程式建立一個「docker-compose.yml」檔案:

將以下程式碼區塊貼到您的 Compose 檔案中,然後根據您的特定需求進行調整:

儲存新的 Compose 文件,然後執行以下命令來啟動它:

最後,測試您的 Compose 部署是否正常運作。就我而言,我將透過開啟 Web 瀏覽器並導航至「localhost:8080」來測試我的 Nginx Docker 容器。

顯示匯入的 Nginx Docker 容器在其新機器主機上正常運作的螢幕截圖。

學習如何將 Docker 容器複製並移動到其他 Linux 主機只是您可以使用電腦執行的少數任務之一。使用 Docker 在 Linux 上安裝 Minecraft 伺服器,探索這個奇妙的自架世界。

圖片來源:Max Duzij,來自 Unsplash。所有修改和螢幕截圖均由 Ramces Red 進行。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *