Docker之构建镜像的两种方式(Dockerfile、commit)

本文详细介绍如何通过Docker的commit命令和Dockerfile来构建和优化镜像,包括使用Ubuntu和RHEL7镜像创建容器,安装httpd服务,以及如何利用缓存特性加速构建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.利用commit构建镜像

(1)利用commit封装镜像

commit构建镜像的步骤

运行容器
修改容器
将容器保存为新的镜像

(2)利用ubuntu镜像建立容器vm1,,对它进行修改
在这里插入图片描述
(3)使用commit命令进行封装

在这里插入图片描述在这里插入图片描述在这里插入图片描述

(4)使用新封装的镜像构建容器,保存了之前操作的痕迹

在这里插入图片描述

2.编写Dockerfile构建镜像

准备编写DockFile实现安装httpd服务

(1)删除前面构建的镜像和容器
docker rmi ubuntu:v1

(2)拉取rhel7镜像源

在这里插入图片描述(3)编写Dockerfile
在这里插入图片描述在这里插入图片描述

FROM rhel7      # 源镜像是rhel7,最好将名为rhel7的镜像放在本地
COPY yum.repo /etc/yum.repo.d		#将本地的yum源文件复制到容器中的/etc/yum.repo.d/目录下
RUN  rpmdb --rebuilddb && yum install -y httpd在容器中安装httpd服务
# 执行命令安装httpd并清除yum缓存
# rpmdb 命令用于初始化和重建rpm数据库
# --rebuilddb:从已安装的包头文件,反向重建RPM数据库
EXPOSE 80    # 定义端口为80
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
# 打开apach服务
# -D 是全局文件/etc/sysconfig/httpd中的打开参数

(4)封装镜像,并测试能否正常使用

[root@server1 docker]# docker build  -t rhel7:v1 .		##注意命令后有一个点,表示当前目录下

在这里插入图片描述在这里插入图片描述
(5)基于刚才封装的镜像运行一个容器

在这里插入图片描述
(6) 书写httpd服务默认发布文件,导入容器内部

在这里插入图片描述访问测试
可以看出刚才构建的镜像是好的,基于镜像运行起来的容器也是好的

在这里插入图片描述在这里插入图片描述
(7)构建镜像,并添加数据卷挂载位置(VOLUME [“var/www/html”])
在这里插入图片描述
Build构建镜像
在这里插入图片描述

[root@server1 docker]# docker build -t rhel7:v2 .
Sending build context to Docker daemon  4.096kB
Step 1/6 : FROM rhel7
 ---> 0a3eb3fde7fd
Step 2/6 : COPY yum.repo /etc/yum.repos.d/
 ---> Using cache												##使用了缓存
 ---> db0ce1a7fb77
Step 3/6 : RUN rpmdb --rebuilddb  && yum install -y httpd
 ---> Using cache												##使用了缓存
 ---> ba007361f210
Step 4/6 : EXPOSE 80
 ---> Using cache												##使用了缓存
 ---> 554977c12e37
Step 5/6 : VOLUME ["/var/www/html"]
 ---> Running in 4fbea9452763
Removing intermediate container 4fbea9452763
 ---> 7094cf717b4c
Step 6/6 : CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
 ---> Running in 0efba909bae5
Removing intermediate container 0efba909bae5
 ---> 6d1e0dbaa3ff
Successfully built 6d1e0dbaa3ff
Successfully tagged rhel7:v2

这就要提到一个重要点:镜像的缓存特性
此时可以看到 rhel7:v2比 rhel7:v1多了一层

在这里插入图片描述

生成容器,并测试是否可以正常访问
在这里插入图片描述在这里插入图片描述

(8)直接在数据卷中编写发布文件

重新生成容器

在这里插入图片描述查看httpd3的数据卷位置

在这里插入图片描述进入数据卷位置并编写发布文件并测试

在这里插入图片描述
测试

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值