跳转至

容器与镜像的导入导出区别

一、export与save:

  1. export用到导出容器,save用于导出镜像,都是都是导出tar文件。
  2. export一次只能导出一个容器,save一次可以导出多个镜像。
  3. export将当前容器状态导出到文件,类似快照,不包含元数据和历史信息,体积更小;save 导出的镜像包含镜像元数据和历史信息。

比较export和save导出tar包的内容:

1
2
$ docker save -o ubuntu-img.tar ubuntu:latest
$ docker export -o ubuntu-container.tar myubuntu

查看save导出的ubuntu-img.tar内容

1
2
3
4
5
6
7
8
$ tar -tf ubuntu-img.tar 
15c50011d28601e04214355466ea8b179c4566bbd357c098376a534139efb5a9/
15c50011d28601e04214355466ea8b179c4566bbd357c098376a534139efb5a9/VERSION
15c50011d28601e04214355466ea8b179c4566bbd357c098376a534139efb5a9/json
15c50011d28601e04214355466ea8b179c4566bbd357c098376a534139efb5a9/layer.tar
e4c58958181a5925816faa528ce959e487632f4cfd192f8132f71b32df2744b4.json
manifest.json
repositories

查看export导出的ubuntu-container.tar内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ tar -tf  ubuntu-container.tar --exclude='*/*'
.dockerenv
bin
boot/
dev/
etc/
home/
lib
lib32
lib64
libx32
media/
mnt/
opt/
proc/
root/
run/
sbin
srv/
sys/
tmp/
usr/
var/

二、import与load

  1. import导入的是容器包,load导入的是镜像包,两者都会恢复为镜像
  2. import可以为镜像指定新名称,load不能对导入镜像重命名
  3. import会丢失历史,恢复后中包含一层,load不会丢失历史和层

三、commit与export+import

  1. export+import与commit都可以将容器转为镜像
  2. export+import恢复的镜像仅包含一层,commit包含原镜像所有层