如何在不使用倉庫的情況下將Docker映象從一臺主機複製到另一臺主機?


如果您在本地機器上有一個Docker映象,並且想要將該映象複製到另一臺機器,則有兩種方法可以做到這一點。第一種方法是將該映象推送到Docker Hub登錄檔等倉庫中。您需要在Docker Hub上擁有一個帳戶,然後可以使用Docker push命令將映象推送到其中。

但是,如果您不想經歷建立帳戶、標記映象等的麻煩,則可以使用其他簡單的方法。讓我們在這篇文章中檢視所有這些方法。

方法一:從TAR檔案儲存和載入映象

Docker允許您使用Docker save命令將映象儲存到tar檔案中。這還將壓縮整個映象,並允許您輕鬆快速地共享它們。然後,您可以在另一臺機器上使用Docker load命令從tar檔案載入Docker映象。執行此操作的命令如下:

$ docker save -o <tar file path in source host machine> <image name>

然後,您可以使用cp、rsync、scp等簡單工具或您喜歡的任何其他方法複製此tar檔案。接下來,您可以使用Docker load命令從該tar檔案恢復映象。

$ docker load -i <path to image tar file>

方法二:透過SSH複製Docker映象

您還可以透過SSH傳輸Docker映象,並即時壓縮內容。

$ docker save <image> | bzip2 | \
   ssh user@host 'bunzip2 | docker load'

如果您想檢查傳輸過程,可以使用管道中的pv。

$ docker save <image> | bzip2 | pv | \
   ssh user@host 'bunzip2 | docker load'

方法三:使用Docker機器複製Docker映象

如果您有兩臺Docker機器——machine1和machine2,您可以使用以下命令複製映象。

$ docker $(docker-machine config machine1) save <image> | docker $(docker-machine config machine2) load

方法四:使用DOCKER_HOST變數複製映象

您還可以使用DOCKER_HOST變數將映象從一臺主機複製到另一臺主機。您將需要SSH憑據,並且本地和遠端機器上的兩個使用者都應屬於Docker組。

$ docker save <image name>:<tag-name> | gzip | DOCKER_HOST=ssh://user@remotehost docker load

方法五:使用docker-push-ssh複製映象

您還有一個名為docker-push-ssh的命令列實用程式。它將幫助您在主機伺服器上設定一個臨時的私有Docker登錄檔。然後,它將從本地主機建立一個SSH隧道。接下來,它將推送Docker映象並自動清理。

與docker save命令相比,使用此方法的優點是,在這種情況下,只有新層始終被推送到伺服器。這將導致更快的上傳速度。

為此,您必須首先使用以下pip命令安裝docker-push-ssh。

$ pip install docker-push-ssh

然後,您可以使用單行命令來推送映象。

$ docker-push-ssh -i ~/your-ssh-key your-username@your-server.com <docker-image>

方法六:使用Docker Machine scp傳輸映象

建立Docker Machine scp是為了將檔案從一臺Docker機器複製或傳輸到另一臺機器。如果您想將映象從本地機器複製到雲上的遠端Docker機器(例如AWS或Digital Ocean),它將非常方便。這是因為Docker Machine將自動處理SSH憑據。

為此,您可以按照以下步驟操作:

  • 使用Docker save命令。
$ docker save -o <tar-file-location> <image name>
  • 使用docker machine scp傳輸Docker映象。
$ docker-machine scp ./image-tar.tar target-machine:/home/ubuntu

這裡,target-machine是遠端機器的名稱,/home/ubuntu是目標位置,image-tar是tar檔案的名稱。

  • 載入tar檔案。
$ docker-machine ssh target-machine sudo docker load -i image-tar.tar

總而言之,在本文中,我們討論了6種不同的方法,您可以使用這些方法將Docker映象從一臺本地機器複製或傳輸到另一臺遠端機器,而無需使用任何Docker登錄檔或倉庫。根據您的方便和需求,您可以輕鬆地使用任何討論過的方法。

更新於:2021年8月6日

2K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告