docker export和docker import

导出一个容器快照

docker export 容器ID/容器Name > xxx.tar 

导入一个容器快照到本地镜像库

docker import xxx.tar NewImageName:tag  

适用场景

主要用来制作基础镜像,比如从一个ubuntu镜像启动一个容器,然后安装一些软件和进行一些设置后,使用docker export保存为一个基础镜像。然后把这个镜像分发给其他人使用,作为基础的开发环境。(因为export导出的镜像只会保留从镜像运行到export之间对文件系统的修改,所以只适合做基础镜像)

注意事项

  1. 会丢弃历史记录和元数据
  2. 启动export与import命令导出导入的镜像必须加/bin/bash或者其他/bin/sh,否则会报错
  3. docker export导出的镜像是不带历史记录的,如果原本的镜像有3层,export之后只会有1层,这一层为从镜像运行到export之间对文件系统的修改
  4. 可以使用docker history ImageName/ImageID 查看镜像,只有一层

docker commit

docker commit 容器ID/容器Name new_image_name

选项说明

-a:提交的镜像作者
-c:使用dockerfile指令来创建镜像
-m:提交时的说明文字
-p:在commit的时候,将正在运行的容器暂停

适用场景

主要作用是将配置好的一些容器复用,再生成新的镜像

注意事项

commit是合并了save、load、export、import这几个特性的一个综合性的命令,主要做了:

  1. 将container当前的读写层保存下来,保存成一个新层
  2. 和镜像的历史层一起合并成一个新的镜像
  3. 如果原本的镜像有3层,commit之后就会有4层,最新的一层为从镜像运行到commit之间对文件系统的修改

docker save和docker load

将指定镜像导出

docker save -o xxx.tar 镜像名 

导入镜像到本地镜像库

docker load -i xxx.tar 

适用场景

生产环境没有外网,在本机将镜像打包成tar包文件拷贝到生产环境,再通过docker push到生产环境本地镜像仓库

总结区别

docker save保存的是镜像(image)
docker export保存的是容器(container)
docker load /docker import载入的时候,两者都会恢复为镜像
docker load无法对镜像重命名,docker import可以对镜像指定新名称
docker export比docker save的包要小,原因是save的是一个分层的文件系统,export导出的只是一层文件系统
docker commit 和docker export的区别:
docker commit保存镜像文件系统的历史层,docker export保存从镜像运行到export之间对文件系统的修改的最新一层

文章作者: 鲜花的主人
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 爱吃可爱多
Docker Docker
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝