博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker - 生成镜像
阅读量:7077 次
发布时间:2019-06-28

本文共 4036 字,大约阅读时间需要 13 分钟。

利用docker commit命令生成镜像

Docker镜像是多层存储,每一层是在前一层的基础上进行的修改。而容器是镜像为基础层的多层存储。

如果不使用数据卷,运行一个容器的时候,对任何文件的修改都会被记录于容器存储层。
docker commit 命令可以将容器存储层保存下来成为镜像。也就将原有镜像的基础层和容器存储层,并构成包含原有容器最后的文件变化的新镜像。

但在实际环境中,推荐使用Dockerfile来完成定制镜像,而不是使用docker commit 命令。

原因如下:

  • 大量的无关内容被添加进来,如果不小心清理,将会导致镜像极为臃肿。
  • 使用 docker commit命令生成的是黑箱镜像,除了制作镜像的作者清楚具体的改动,他人只能通过docker diff命令获取很少的线索,难以维护。

示例:

[root@CentOS-7 ~]# docker imagesREPOSITORY              TAG                 IMAGE ID            CREATED             SIZEdocker.io/ubuntu        latest              6a2f32de169d        6 days ago          117.2 MB[root@CentOS-7 ~]# [root@CentOS-7 ~]# docker run --name TestCommitImages -d -it ubuntu bashca9cb66a39ca0271149fadce05523d41488a5c047196de510fe54c0f26a46b25[root@CentOS-7 ~]# [root@CentOS-7 ~]# docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMESca9cb66a39ca        ubuntu              "bash"              4 seconds ago       Up 2 seconds                            TestCommitImages[root@CentOS-7 ~]# [root@CentOS-7 ~]# docker exec -it TestCommitImages bashroot@ca9cb66a39ca:/# echo "this is a test !" >> testcommit.logroot@ca9cb66a39ca:/# ls -l testcommit.log -rw-r--r-- 1 root root 17 Apr 19 03:04 testcommit.logroot@ca9cb66a39ca:/# cat testcommit.log this is a test !root@ca9cb66a39ca:/# exitexit[root@CentOS-7 ~]# [root@CentOS-7 ~]# docker diff TestCommitImagesC /runA /run/secretsC /rootA /root/.bash_historyA /testcommit.log[root@CentOS-7 ~]# [root@CentOS-7 ~]# docker commit --author "anliven" --message "touch new file" TestCommitImages ubuntu:commitsha256:87575bc0c80f7dd9230072626a31cdeea5c6163e70b559f5432eaac881bd2376[root@CentOS-7 ~]# [root@CentOS-7 ~]# docker images ubuntuREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              commit              87575bc0c80f        36 seconds ago      117.2 MBdocker.io/ubuntu    latest              6a2f32de169d        6 days ago          117.2 MB[root@CentOS-7 ~]#[root@CentOS-7 ~]# docker history ubuntu:commitIMAGE               CREATED             CREATED BY                                      SIZE                COMMENT87575bc0c80f        9 minutes ago       bash                                            106 B               touch new file6a2f32de169d        6 days ago          /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B                 
6 days ago /bin/sh -c mkdir -p /run/systemd && echo 'doc 7 B
6 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 2.759 kB
6 days ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0 B
6 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 745 B
6 days ago /bin/sh -c #(nop) ADD file:b8a2c16d65e533a2bc 117.2 MB [root@CentOS-7 ~]# [root@CentOS-7 ~]# docker run --name NewImages -it ubuntu:commit bashroot@cfa4b8cf7d2c:/# ls -l testcommit.log -rw-r--r-- 1 root root 17 Apr 19 03:04 testcommit.logroot@cfa4b8cf7d2c:/# cat testcommit.log this is a test !root@cfa4b8cf7d2c:/# exitexit[root@CentOS-7 ~]#[root@CentOS-7 ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMEScfa4b8cf7d2c ubuntu:commit "bash" 2 hours ago Exited (0) 6 seconds ago NewImagesca9cb66a39ca ubuntu "bash" 2 hours ago Up 2 hours TestCommitImages[root@CentOS-7 ~]# [root@CentOS-7 ~]# docker logs NewImagesroot@cfa4b8cf7d2c:/# ls -l testcommit.log -rw-r--r-- 1 root root 17 Apr 19 03:04 testcommit.logroot@cfa4b8cf7d2c:/# cat testcommit.log this is a test !root@cfa4b8cf7d2c:/# exitexit[root@CentOS-7 ~]#

转载于:https://www.cnblogs.com/anliven/p/6733353.html

你可能感兴趣的文章
时间序列/信号处理开源数据集-转
查看>>
Mac下配置Java Web开发环境(Mac 10.12)
查看>>
OPC接口相关资料地址
查看>>
SpringMVC HelloWorld实例开发及部署
查看>>
BUPT2017 wintertraining(15) #2 题解
查看>>
Java开发中的23种设计模式详解(转)
查看>>
Android最佳性能实践(一)——合理管理内存
查看>>
assert的作用是什么
查看>>
HTML5+CSS3 效果网站集合
查看>>
AutoPlay Menu Builder入门教程
查看>>
Request.Cookies和Response.Cookies
查看>>
在Razor中输出Html的两种方式
查看>>
iOS-打包成ipa的4种方法
查看>>
转负二进制(个人模版)
查看>>
MySQL数据库如何导入导出
查看>>
yii2: oralce中文,有的汉字是2个字节,有的汉字是3个字节
查看>>
mysql utf8mb4 所引起的问题
查看>>
JGraphT
查看>>
【java】实体类中 按照特定的字段 进行升序/降序 排序
查看>>
Unity Shader 基础(1): RenderType & ReplacementShader
查看>>