执行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 定义为卷。
答案 0 :(得分:1)
查看示例代码很好,找到路由原因。
您的泊坞窗图片来自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。
这就是您在进入容器时可以看到更改并在退出时丢失的原因。
答案 1 :(得分:1)
以下是我如何使用它:
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