怎么在码头工人中利用Dockerfile构建镜像

  介绍

本篇文章给大家分享的是有关怎么在码头工人中利用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构建镜像