如何确保在Docker中不重复命令
我正在学习使用docker文件构build图像。
我所做的简短的描述
步骤1
为了进行testing,我使用下面的docker文件开始构build镜像
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映像中成功安装apache
第2步
接下来,我正试图在现有的新创build的图像中安装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 运行命令,即从网上下载大尺寸的文件,所以我想确保每个命令的成功。 否则会中途失败,再次收取更多的MB。
注意:如果我错了,请描述处理图像和docker文件的最佳方法。
它在这里重复,因为你没有添加另一个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