Docker RUN语句(修改文件)不执行

执行Dockerfile时,我遇到了奇怪的行为(在https://github.com/Krijger/es-nagios-docker )。 基本上,我添加一个文件来追加它的内容到图像中的文件

ADD es-command /tmp/ RUN cat tmp/es-command >> /opt/nagios/etc/objects/commands.cfg 

问题是,当/ tmp / es-command存在于结果图像中时, commands.cfg文件没有改变。

作为接受答案的前奏:我的Dockerfile扩展了cpuguy83 / nagios ,它将/ opt / nagios / etc定义为一个卷。

看看示例代码,find路由的原因。

你的docker图像来自cpuguy83/nagios ,从这个图像https://github.com/cpuguy83/docker-nagios/blob/master/Dockerfile

你可以看到/opt/nagios/etc目录被设置为VOLUME

  VOLUME ["/opt/nagios/var", "/opt/nagios/etc", "/opt/nagios/libexec", "/var/log/apache2", "/usr/share/snmp/mibs"] 

然后你可以注意到docker volume在下一次提交时就不能被修改了。

这就是当你进入容器并在退出时丢失它的原因。

以下是我如何使用它:

 ls ./ configure.sh commands.cfg cat configure.sh #!/bin/bash script_path=$( cd "$( dirname "$0" )" && pwd ) cp ${script_path}/commands.cfg /opt/nagios/etc/objects/ docker run -d --name nagios cpuguy83/nagios docker run --rm -v $(pwd):/tmp --volumes-from nagios --entrypoint /tmp/configure.sh cpuguy83/nagios