前面我們講到了使用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對象,而是直接跟要導入的對象,並且可以給導入的鏡像命名.