前面我們講到了使用nexus搭建docker映象倉庫,操作還是有點複雜的,可能有的童鞋僅僅是想嘗試kubernetes功能,並不想在搭建倉庫上花費過多時間,但是又想在不同的主機之間傳遞映象.其實可以通過docker save
命令來實現,通過docker save把一個映象儲存為tar
格式壓縮檔案,然後在要使用這個映象機器上執行docker load
命令來載入這個映象.
複製檔案的方式不方便對檔案進行版本管理,大家為了方便測試可以這樣玩玩,強烈建議生產環境中不要這麼做.
通過docker save儲存映象為檔案
docker save命令的格式如下
docker save -o <path for generated tar file> <image name></image>
-o或者--output,指定輸出檔案(tar格式)的位置,這裡的位置不僅僅是要輸出的目錄,還包括要儲存的tar檔案的名稱
image name 要儲存的映象的名稱
例如,以下命令把alpine:latest映象儲存為名為alpine.tar檔案(儲存位置為當前目錄,也可以通過指定絕對路徑把映象儲存到指定位置)
docker save -o alpine.tar alpine:latest
儲存為檔案以後,我們就可以通過cp,scp,ftp等工具把映象檔案複製到目標電腦上
通過docker load載入儲存的tar檔案
命令格式如下:
docker load -i <path to image tar file>
-i同--input,指定一個tar檔案
我們執行命令docker load -i alpine.tar
就可以在目標機器上載入我們儲存的alpine映象了.
使用docker export/import來打包/載入映象
使用docker export/import與使用docker save/load用法類似,不同的是docker save是把一個映象儲存為tar檔案,而docker export是把一個執行的容器的檔案系統的快照儲存為壓縮檔案,通過docker import從匯出的檔案系統中建立一個映象
注意,docker import並不是把匯出的容器還原,而是從中生成一個映象.
通過docker import 匯入的映象將丟失所有後設資料和歷史記錄,實際專案中我們並不關心容器的歷史記錄和後設資料,我們關係的是應用程式的正常執行的優化,使用這種方式生成的映象一定程度上減小了映象的體積.
- docker export 匯出容器為壓縮檔案
命令格式如下:
docker export -o <path for generated tar file> <container name>
此命令類似於docker save,指定要輸出的檔案路徑和檔名,後面跟上要匯出的容器的名稱或者id
例如通過docker export -o alpine.tar c054
把一個執行的容器(id開頭為c054)匯出為檔案.
我們可以檢視生成的alpine.tar檔案,裡面其實是一個linux檔案系統
- docker import 把匯出的檔案系統匯入為映象
我們通過命令docker import alpine.tar myalpine
把剛匯出的容器檔案系統匯出為映象,並且命名為myalpine
注,這裡與docker load不同的是這裡不需要
-i
來指定input物件,而是直接跟要匯入的物件,並且可以給匯入的映象命名.