docker--容器和鏡像的導入導出及部署


鏡像導出 save

查看鏡像

docker images

導出鏡像

docker save -o test.tar image_name

docker save image_name > /test.tar

容器導出 export

導出容器

命令格式為:

docker export [-o|--output[=""]] CONTATINER

 或:

docker export 容器id/name >文件名.tar

例如:

docker export -o test.img test

  test.img : 這里可以導出tar文件 , 也可以導出二進制鏡像文件img

  test : 需要導出的容器名, 通過docker ps查看

導入壓縮包(包括壓縮的鏡像和容器)

安裝dokcer

import

格式:

docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|URL|-[REPOSITORY[:YAG]]

例如:

docker import test.img test

  test : 為鏡像名

load

格式:

docker load --input /test.tar

區別:

  1. docker save保存的是鏡像(image),docker export保存的是容器(container);

  2. docker load用來載入鏡像包,docker import用來載入容器包,但兩者都會恢復為鏡像;

  3. docker load不能對載入的鏡像重命名,而docker import可以為鏡像指定新名稱。

注意:

  如果是save導出的鏡像, 使用import 導入, 會報 Error: No command specified 錯誤, 所以使用save導出, 盡量使用load導入, 雖然不能重命名, 但是也比報錯強

部署鏡像

啟動鏡像

docker run -d --name container_test --privileged -it test:latest /usr/sbin/init

進入鏡像

docker exec -it container_test /bin/bash

報錯

報錯命令

docker load --input test.tar

報錯內容

  open /var/lib/docker/tmp/docker-import-500852078/repositories: no such file or dir

報錯原因

  通過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

報錯解決

cat test.tar | sudo docker import - test/ubuntu:v1.0

注意

docker load 只能導入鏡像文件(也就是通過save導出的文件)

 

 

<<詳解docker save-load export-import區別>>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM