当前位置: 首页 > news >正文

Docker - 生成镜像

利用docker commit命令生成镜像

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

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

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

示例:

[root@CentOS-7 ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu        latest              6a2f32de169d        6 days ago          117.2 MB
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker run --name TestCommitImages -d -it ubuntu bash
ca9cb66a39ca0271149fadce05523d41488a5c047196de510fe54c0f26a46b25
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ca9cb66a39ca        ubuntu              "bash"              4 seconds ago       Up 2 seconds                            TestCommitImages
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker exec -it TestCommitImages bash
root@ca9cb66a39ca:/# echo "this is a test !" >> testcommit.log
root@ca9cb66a39ca:/# ls -l testcommit.log 
-rw-r--r-- 1 root root 17 Apr 19 03:04 testcommit.log
root@ca9cb66a39ca:/# cat testcommit.log 
this is a test !
root@ca9cb66a39ca:/# exit
exit
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker diff TestCommitImages
C /run
A /run/secrets
C /root
A /root/.bash_history
A /testcommit.log
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker commit --author "anliven" --message "touch new file" TestCommitImages ubuntu:commit
sha256:87575bc0c80f7dd9230072626a31cdeea5c6163e70b559f5432eaac881bd2376
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker images ubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              commit              87575bc0c80f        36 seconds ago      117.2 MB
docker.io/ubuntu    latest              6a2f32de169d        6 days ago          117.2 MB
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker history ubuntu:commit
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
87575bc0c80f        9 minutes ago       bash                                            106 B               touch new file
6a2f32de169d        6 days ago          /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B                 
<missing>           6 days ago          /bin/sh -c mkdir -p /run/systemd && echo 'doc   7 B                 
<missing>           6 days ago          /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/   2.759 kB            
<missing>           6 days ago          /bin/sh -c rm -rf /var/lib/apt/lists/*          0 B                 
<missing>           6 days ago          /bin/sh -c set -xe   && echo '#!/bin/sh' > /u   745 B               
<missing>           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 bash
root@cfa4b8cf7d2c:/# ls -l testcommit.log 
-rw-r--r-- 1 root root 17 Apr 19 03:04 testcommit.log
root@cfa4b8cf7d2c:/# cat testcommit.log 
this is a test !
root@cfa4b8cf7d2c:/# exit
exit
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
cfa4b8cf7d2c        ubuntu:commit       "bash"              2 hours ago         Exited (0) 6 seconds ago                       NewImages
ca9cb66a39ca        ubuntu              "bash"              2 hours ago         Up 2 hours                                     TestCommitImages
[root@CentOS-7 ~]# 
[root@CentOS-7 ~]# docker logs NewImages
root@cfa4b8cf7d2c:/# ls -l testcommit.log 
-rw-r--r-- 1 root root 17 Apr 19 03:04 testcommit.log
root@cfa4b8cf7d2c:/# cat testcommit.log 
this is a test !
root@cfa4b8cf7d2c:/# exit
exit
[root@CentOS-7 ~]# 

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

相关文章:

  • 飞鱼星路由器配置端口映射
  • 《Linux Device Drivers》第十八章 TTY驱动程序——note
  • 延迟加载JavaScript
  • 【解决】缺少libstdc++.so.6库的原因及解决的方法
  • 雪城大学信息安全讲义 五、竞态条件
  • virtual的使用方法
  • POJ 1321 棋盘问题(DFS板子题,简单搜索练习)
  • Swift字符串基本操作(二)
  • Oracle空间查询 ORA-28595
  • 优化代码,有效使用内存总结
  • Bootstrap 介绍
  • Liunx笔记:zabbix编译安装
  • 这个时代会残酷惩罚不肯改变的人
  • POJ 3155 Hard Life(最大密度子图)
  • HDU 2588 GCD amp;amp; GCD问题总结
  • 【mysql】环境安装、服务启动、密码设置
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Druid 在有赞的实践
  • ECMAScript6(0):ES6简明参考手册
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • IOS评论框不贴底(ios12新bug)
  • k8s 面向应用开发者的基础命令
  • Otto开发初探——微服务依赖管理新利器
  • SpriteKit 技巧之添加背景图片
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 那些被忽略的 JavaScript 数组方法细节
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前嗅ForeSpider中数据浏览界面介绍
  • 人脸识别最新开发经验demo
  • 使用Swoole加速Laravel(正式环境中)
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 正则学习笔记
  • 06-01 点餐小程序前台界面搭建
  • (03)光刻——半导体电路的绘制
  • (52)只出现一次的数字III
  • (8)STL算法之替换
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (七)Knockout 创建自定义绑定
  • (四)汇编语言——简单程序
  • (转)树状数组
  • (转)原始图像数据和PDF中的图像数据
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .a文件和.so文件
  • .net Application的目录
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET Framework杂记
  • .NET Reactor简单使用教程
  • .NET6实现破解Modbus poll点表配置文件
  • .NET使用存储过程实现对数据库的增删改查
  • .net中应用SQL缓存(实例使用)