四、手工制作docker镜像
docker具有build anywhere的特性,但是很多时候由于一些特写,需要对docker 容器中的一些文件进行增删改查,或增加了一些特定服务,而修改部分仅仅是对于该容器有效,如果有RC控制器的情况下,从镜像中重新生成一个容器时,修改的文件就作废。为了防止这种情况,需要将修改的部分固化到镜像文件中成为新镜像。
手工制作镜像的步骤主要分为:
1、创建一个容器,并安装特定服务或修改对应文件;
2、docker commit 将容器提交为镜像;
3、验证新镜像
第一步:修改
[root@docker-1-26 home]# docker run -d -p 80:80 centos tail -F /avr/log/123.txt #第一步,首先创建一个容器 86f5a7a6952556f947fda6d94f4138ac9c38a6203b6a6afca4b9711da3e84c27 [root@docker-1-26 home]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 86f5a7a69525 centos "tail -F /avr/log/12…" 3 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp charming_lumiere [root@docker-1-26 home]# docker exec -it 86f5a7a69525 bash [root@86f5a7a69525 /]# grep -Ev "^$|#" /etc/yum.repos.d/CentOS-Base.repo #缺省情况下,yum源的为centos的官网 [BaseOS] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [root@86f5a7a69525 /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo #修改容器中的YUM源为阿里源 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2595 100 2595 0 0 3804 0 --:--:-- --:--:-- --:--:-- 3804 [root@86f5a7a69525 /]# grep -Ev "^$|#" /etc/yum.repos.d/CentOS-Base.repo #修改后的yum源 [base] name=CentOS-$releasever - Base - mirrors.aliyun.com failovermethod=priority baseurl=https://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/ http://mirrors.aliyuncs.com/centos/$releasever/BaseOS/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/BaseOS/$basearch/os/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official ………………
………………
………………
第二步:docker commit
[root@docker-1-26 home]# docker ps -a #查看container ID CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 86f5a7a69525 centos "tail -F /avr/log/12…" 9 minutes ago Up 9 minutes 0.0.0.0:80->80/tcp charming_lumiere [root@docker-1-26 home]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 0d120b6ccaa8 3 months ago 215MB [root@docker-1-26 home]# docker container commit 86f5a7a69525 centos:edityum #docker container commit,并打上edityum的tag sha256:b6071874f761fe5f12d21b02635b40048ec60f3356bdd8ddaedf9602634ba6c0 [root@docker-1-26 home]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos edityum b6071874f761 39 seconds ago 234MB #发现修改对应文件后,镜像会有略微增加 centos latest 0d120b6ccaa8 3 months ago 215MB [root@docker-1-26 home]#
第三步:验证
[root@docker-1-26 ~]# docker run -d centos:edityum tail -F /sedad/a/da/ #用新镜像创建一个容器 a6fc78a41d1c26483f56ee866443e390f6445e20d8d28d58faaeaebdea8a2bec [root@docker-1-26 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a6fc78a41d1c centos:edityum "tail -F /sedad/a/da/" 6 seconds ago Up 4 seconds 80/tcp epic_einstein 86f5a7a69525 centos "tail -F /avr/log/12…" 15 minutes ago Up 15 minutes 0.0.0.0:80->80/tcp charming_lumiere [root@docker-1-26 ~]# docker exec -it a6fc78a41d1c /bin/bash [root@a6fc78a41d1c /]# grep -Ev "^$|#" /etc/yum.repos.d/CentOS-Base.repo #验证yum源的修改结果,发现yum已经被修改 [base] name=CentOS-$releasever - Base - mirrors.aliyun.com failovermethod=priority baseurl=https://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/ http://mirrors.aliyuncs.com/centos/$releasever/BaseOS/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/BaseOS/$basearch/os/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official [extras] ……………………
……………………
…………………… [root@a6fc78a41d1c /]#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言