本篇文章给大家分享的是有关怎么在码头工人中利用Dockerfile构建镜像,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强> 1,使用提交命令构建强>
码头工人提交命令是创建新镜像最直观的方法,其过程包含三个步骤:
- <李>
运行容器;
李> <李>修改容器;
李> <李>将容器保存为新的镜像。
李>先从创建一个新容器开始,这个容器我们就使用很常见的ubuntu镜像,操作步骤如下
1.1运行一个要进行修改的容器
root@ubuntu: ~ #, docker run -ti ubuntu /bin/bash root@733a4b080491:/#
1.2安装Apache软件包
root@733a4b080491:/#, apt-get 更新 …,… root@733a4b080491:/#, apt-get install  -y 输入 …,…
我们启动了一个容器,并在里面安装了Apache。我们将会拿这个容器作为一个Web服务器来运行,我们需要把它保存下来,这样就不用每次都运行这个步骤了。
1.3提交定制容器
root@ubuntu: ~ #, docker ps a CONTAINER ID , IMAGE ,,, COMMAND ,,, CREATED ,,, STATUS ,,,,, PORTS ,,名字 733 a4b080491 , ubuntu ,,,,/bin/bash",,, 11, minutes ago , Exited (0), 5, seconds ago ,,,,, suspicious_mestorf
root@ubuntu: ~ #, docker commit 733 a4b080491 wzlinux/ubuntu_with_apache sha256:902ac2c87147fefc5b70c741ce9550dcda426cea9f824f442d5cc2744bdc90ae
root@ubuntu: ~ #, docker 图像 REPOSITORY ,,,, TAG ,,,, IMAGE ID ,, CREATED ,,大小 wzlinux/ubuntu_with_apache latest ,,, 902 ac2c87147 , 33, seconds ago 261 mb ubuntu ,,,,, latest ,,, 20 c44cd7596f , 10, days ago ,, 123 mb
可以看的到,我们使用码头工人承诺提交了修改过的容器,从规模上可以看到镜像因为安装软件而变大了,码头工人承诺提交的只是创建容器的镜像与容器的当前状态之间有差异的部分,这使得该更新非常轻量。
以上演示了如何用码头工人提交创建新镜像。然而,码头工人并不建议用户通过这种方式构建镜像,因为这是一种手工创建镜像的方式,容易出错,效率低且可重复性弱,比如要在debian基地镜像中也加入apache,还得重复前面的所有步骤。更重要的:使用者并不知道镜像是如何创建出来的,里面是否有恶意程序。也就是说无法对镜像进行审计,存在安全隐患。
不过,为了对码头工人有一个更全面的了解,我们还是要了解一下如何使用码头工人承诺构建码头工人镜像。因为即便是用Dockerfile(推荐方法)构建镜像,底层也码头工人提交一层一层构建新镜像的。学习码头工人承诺能够帮助我们更加深入地理解构建过程和镜像的分层结构。
<强> 2,使用Dockerfile构建强>
Dockerfile使用基本的基于DSL(领域特定语言)语法的指令来构建一个码头工人镜像,我们推荐使用Dockerfile方法来代替码头工人提交,因为通过前者构建镜像更具备可重复性,透明性以及幂等性。
一旦有了Dockerfile,我们就可以使用码头工人建造命令基于该Dockerfile中的指令构建一个新的镜像。
<强> 2.1我们的第一个Dockerfile 强>
用Dockerfile创建上面的ubuntu_with_apache,内容如下。
#, Version 0.0.1 得到ubuntu RUN sed 小姐;& # 39;s/archive.ubuntu.com/cn.archive.ubuntu.com/g& # 39;/etc/apt/sources.list RUN sed 小姐;& # 39;s/security.ubuntu cn.archive.ubuntu/舌鳎# 39;/etc/apt/sources.list RUN apt-get  -y update ,,, apt-get -y install 输入 EXPOSE 80
执行码头工人建造命令时,Dockerfile中的所有指令都会被执行并且提交,并且在该命令成功结束后返回一个新镜像。
root@ubuntu: ~/样品#,docker build -t ubuntu_with_apache_dockerfile 只① Sending build  context 用Docker daemon 6.144 kb ② Step 1/5 :得到ubuntu ,③ ,——→20 c44cd7596f Step 2/5 : RUN sed 小姐;& # 39;s/archive.ubuntu.com/cn.archive.ubuntu.com/g& # 39;/etc/apt/sources.list ,——→Running bac6dc3b900f拷贝 ,——→c66ad94ad8a4 Removing intermediate  container bac6dc3b900f Step 3/5 : RUN sed 小姐;& # 39;s/security.ubuntu cn.archive.ubuntu/舌鳎# 39;/etc/apt/sources.list ,——→Running 5158558 b6403拷贝 ,——→0 a4c480147c5 Removing intermediate  container 5158558 b6403 Step 4/5 : RUN apt-get -y update ,,, apt-get -y install apache2 ,,④ ,——→Running f547ce7a1b39 拷贝,⑤ ,…… ,…… 118年,——→bde35120a ,⑥ Removing intermediate  container f547ce7a1b39 ⑦ Step 5/5 : EXPOSE 80 ,——→Running e546786de05b拷贝 ,——→f55d7b07365b Removing intermediate  container e546786de05b Successfully built  f55d7b07365b ,⑧ 最新Successfully tagged  ubuntu_with_apache_dockerfile:怎么在码头工人中利用Dockerfile构建镜像