如何确保在docker中不重复命令

时间:2016-07-14 12:53:38

标签: docker dockerfile

我正在学习使用docker文件构建图像。

对我所做的简短描述

第1步

为了进行测试,我已经使用docker file

开始使用构建映像
FROM centos:6.8
MAINTAINER Bilal Usean "xxxxx@xxx.xxx"
RUN yum install -y httpd; yum -y clean all

之后我运行了以下命令

docker build -t httpd/centos:6.8 .

它在httpd / centos:6.8 image

中成功安装了apache

第2步

接下来,我尝试在同一个现有的新创建的图像中安装jdk

FROM centos:6.8
MAINTAINER Bilal Usean "xxxxxx@xxx@xx"
RUN yum install -y httpd; yum -y clean all
yum install java-1.6.0-openjdk-devel; yum -y clean all

之后我运行了以下命令

docker build -t httpd/centos:6.8 .

但它会再次从httpd安装开始,我预计它会跳过已安装的httpd步骤。

我认为制作docker文件不是一个好习惯。我在docker文件中有20个 RUN 命令,即从网上下载大文件,所以我想确保每个命令成功。否则它会在中间再次失败,它将收取更多的MB。

注意:如果我的方法错误,请描述处理图片和泊坞窗文件的最佳方式。

1 个答案:

答案 0 :(得分:3)

它在此重复,因为您没有添加另一个RUN命令,而是附加(并更改)了上一个命令(docker检测到此更改,并运行新命令)。

你应该写的是:

FROM centos:6.8
MAINTAINER Bilal Usean "xxxxxxxx@xxx.xxx"
RUN yum install -y httpd; yum -y clean all
RUN yum install java-1.6.0-openjdk-devel; yum -y clean all