export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。 Dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。
快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。
docker save 保存的是镜像(image),docker export 保存的是容器(contAIner);
docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;
docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。
(相当于镜像的备份和恢复)
导出镜像:
docker save -o <保存路径> <镜像名称:标签>
如把A机 ubuntu:18.04 导出到当前文件夹,则在A机上运行:
docker save -o ./ubuntu18.tar ubuntu:18.04
此时,把A机当前文件夹下的ubuntu18.tar拷贝到另一台安装过docker的B机上,在B机上导入镜像:
docker load --input ./ubuntu18.tar
这样镜像ubuntu:18.04就成功的从A机复制到B机上了
3. 在开发环境导入上述打包的镜像
a) 查看镜像id
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/calico/node v1.0.1 c70511a49fa1 6 weeks ago 257 MB hello-world latest 48b5124b2768 2 months ago 1.84 kB
b) 选择要打包的镜像,执行打包命令
sudo docker save -o quay.io-calico-node-1.tar quay.io/calico/node
会在当前目录下生成导出文件xxx.tar,然后将此文件下载到本地
c) 导入上述打包的镜像
docker load -i quay.io-calico-node-1.tar
至此,就完成了!