export命令用于持久化容器(不是镜像)。因此,咱们就须要经过如下方法获得容器ID:docker
sudo docker ps -a
接着执行导出:bash
sudo docker export <container id> > /home/export.tarsave
Save命令用于持久化镜像(不是容器)。因此,咱们就须要经过如下方法获得镜像名称:vagrant
sudo docker images
接着执行保存:code
sudo docker save busybox-1 > /home/save.tar
使用export比使用save保存的文件要小一些load saveclass
二者的使用方法是同样的,导入压缩包生成镜像test
docker import - busybox-1-export:latest
docker import能够从新指定镜像的名字import
docker load < /home/save.tar
那,它们之间到底存在什么不一样呢?容器
首先,docker import能够从新指定镜像的名字,docker load不能够rsa
其次,咱们发现导出后的版本会比原来的版本稍微小一些。那是由于导出后,会丢失历史和元数据。执行下面的命令就知道了: 显示镜像的全部层(layer)方法
sudo docker images --tree
执行命令,显示下面的内容。正你看到的,导出后再导入(exported-imported)的镜像会丢失全部的历史,而保存后再加载(saveed-loaded)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将没法回滚到以前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就能够作到层回滚(能够执行docker tag 来回滚以前的层)。
vagrant@Ubuntu-13:~$ sudo docker images --tree ├─f502877df6a1 Virtual Size: 2.489 MB Tags: busybox-1-export:latest └─511136ea3c5a Virtual Size: 0 B └─bf747efa0e2f Virtual Size: 0 B └─48e5f45168b9 Virtual Size: 2.489 MB └─769b9341d937 Virtual Size: 2.489 MB └─227516d93162 Virtual Size: 2.489 MB Tags: busybox-1:latest ```</container>