容器与镜像的关系

本文介绍了Dockercommit和dockerimport的命令、作用以及它们在创建镜像时的区别。dockercommit会保留变更记录,而dockerimport则合并所有变更,可能导致源数据丢失。
摘要由CSDN通过智能技术生成

容器提交 - docker commit

  • 作用
    • 根据容器生产一个新镜像
  • 命令格式
    • docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  • 常用参数
    • -a, --author           作者
    • -c, --change list     Apply Dockerfile instruction to the created image (我暂时还不知道,要学到docker file再解释)
    • -m, --message      注释,相当于git 的 -m 
    • -p, --pause            提交时暂停容器,默认会暂停
docker commit -a "xiaodeng" -m "install net-tools" 2c777 centos-net:v1.0

容器的导出 - docker export

  • 作用
    • 将容器打包成 容器tar文件
  • 命令格式
    • docker export [OPTIONS] CONTAINER
  • 常用参数
    •  -o, --output         当前路径下的名称.tar

容器生成镜像 - docker import

  • 作用
    • 根据容器生成的 tar文件 生成一个新镜像
  • 命令格式
    • docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
  • 常用参数
    • -c, --change          Apply Dockerfile instruction to the created image
    •  -m, --message     注释,相当于git 的 -m 
 docker import -m 'new 镜像' net-tools1.tar net-tools-image:v1.0

docker import和docker commit对比

分别打印docker commit docker import 还有初始的 centos history

root@break-virtual-machine:~# docker history net-tools:v1.0
IMAGE          CREATED          CREATED BY                                       SIZE      COMMENT
604c980eec58   18 minutes ago   /bin/bash                                        40.8MB    容器使用commit的镜像
5d0da3dc9764   2 years ago      /bin/sh -c #(nop)  CMD ["/bin/bash"]             0B
<missing>      2 years ago      /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
<missing>      2 years ago      /bin/sh -c #(nop) ADD file:805cb5e15fb6e0bb0…   231MB
root@break-virtual-machine:~# docker history centos
IMAGE          CREATED       CREATED BY                                       SIZE      COMMENT
5d0da3dc9764   2 years ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]             0B
<missing>      2 years ago   /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
<missing>      2 years ago   /bin/sh -c #(nop) ADD file:805cb5e15fb6e0bb0…   231MB
root@break-virtual-machine:~# docker history net-tools-image:v1.0
IMAGE          CREATED         CREATED BY   SIZE      COMMENT
f1c4e55cd323   7 minutes ago                261MB     使用docker import生成的镜像
root@break-virtual-machine:~#

 使用 docker commit 生成

docker commit -a "芝士小邓" -m "容器使用commit的镜像" c288 net-tools:v1.0

使用 docker import 生成

# 先生成tar文件
docker export -o net-tools-tar.tar  c288b
# 再使用 docker import 生成镜像文件
docker import -m "使用docker import生成的镜像"  net-tools-tar.tar net-tools-image:v1.0

可以看到docker import 将所有的变更进行了合并形成新的一层记录,而docker commit 会保留变更的记录.

如若使用 docker inspect命令去查看centos镜像和使用docker commit 生成的镜像的详细信息,会发现,使用后者的Config属性的Hostname属性的值是前者的镜像id,如果使用docker inspect 查看docker import 生成的镜像你会发现它的Config属性中什么都没有,也就是说使用docker import构建的会丢失所有的原来的信息(源数据)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值