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

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的数据卷位置

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

在这里插入图片描述
测试

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker中,有多种方式可以制作镜像。其中最常用的两种方式是使用docker commit命令和使用Dockerfile文件配合docker build命令来构建镜像。 使用docker commit命令,可以基于一个已存在的容器创建镜像。这个命令会将容器的当前状态保存为一个新的镜像,包括容器中所有的文件系统和配置信息。通过这种方式可以快速创建一个新的镜像,但是它会丢失掉镜像构建的历史记录,不太适合在实际生产环境中使用。 另一种方式是通过编写Dockerfile文件,并使用docker build命令来构建镜像Dockerfile是一个文本文件,其中包含了一系列的指令,用来描述如何构建镜像。当执行docker build命令时,Docker引擎会读取Dockerfile文件的内容,并按照指令的顺序逐步构建出所需的镜像。这种方式可以更加灵活地管理镜像构建过程,并且可以保存镜像构建的历史记录。 综上所述,你可以通过使用docker commit命令或编写Dockerfile文件配合docker build命令来制作Docker镜像。具体选择哪种方式取决于你的需求和实际情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span> #### 引用[.reference_title] - *1* *2* *3* *4* [Docker 四种制作镜像方式](https://blog.csdn.net/eight_eyes/article/details/120803093)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值