docker--容器和鏡像的導入導出及部署
一.鏡像導出 save
1.查看鏡像
docker images
2.導出鏡像
docker save -o test.tar image_name
或
docker save image_name > /test.tar
二.容器導出 export
1.導出容器
命令格式為:
docker export [-o|--output[=""]] CONTATINER
或:
docker export 容器id/name >文件名.tar
例如:
docker export -o test.img test
test.img : 這裏可以導出tar文件 , 也可以導出二進制鏡像文件img
test : 需要導出的容器名, 通過docker ps查看
三.導入壓縮包(包括壓縮的鏡像和容器) : 安裝dokcer
1.import
格式:
docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|URL|-[REPOSITORY[:YAG]]
例如:
docker import test.img test
test : 為鏡像名
2.load
格式:
docker load --input /test.tar
區別:
-
docker save保存的是鏡像(image),docker export保存的是容器(container);
-
docker load用來載入鏡像包,docker import用來載入容器包,但兩者都會恢復為鏡像;
-
docker load不能對載入的鏡像重命名,而docker import可以為鏡像指定新名稱。
四.部署鏡像
1.啟動鏡像
docker run -d --name container_test --privileged -it test:latest /usr/sbin/init
2.進入鏡像
docker exec -it container_test /bin/bash
五.報錯
1.執行命令:docker load --input test.tar
2.報錯如下
open /var/lib/docker/tmp/docker-import-500852078/repositories: no such file or dir
3.原因:
通過dcker save 導出的鏡像就是一個分層的文件系統。Docker鏡像實際上就是由這樣的一層層文件進行疊加起來的,上層的文件會覆蓋下層的同名文件。如果將docker save導出中的各層文件合並到一起,基本就是docker export導入的
的內容。由於docker save
裏面的各層文件會存在很多重復的文件,所以通過save導出的文件比export導出的文件大100多M。
docker load必須要載入的是一個分層文件系統,而test.tar如果是由docker export 導出的,那麽test.tar
不具有這樣的結構,因此無法載入。
而docker import僅僅是將tar包裏面的文件復制進來,所以不管tar包裏面的文件結構是怎樣的,都可以載入進來,所以能夠載入test.tar
4.解決:
cat test.tar | sudo docker import - test/ubuntu:v1.0
5.註意:docker load 只能導入鏡像文件(也就是通過save導出的文件)
詳解docker save-load export-import區別
docker--容器和鏡像的導入導出及部署