我正在开发利用监控应用程序(Centreon)的构建容器。 当我手动构建我的容器(使用docker run)并且当我构建我的docker文件时,我有不同的结果。缺少应用程序使用的某些脚本。
这是我的dockerfile:
FROM centos:centos7
LABEL Author = "AurelienH."
LABEL Description = "DOCKERFILE : Creates a Docker Container for a Centreon poller"
#Update and install requirements
RUN yum update -y
RUN yum install -y wget nano httpd git
#Install Centreon repo
RUN yum install -y --nogpgcheck http://yum.centreon.com/standard/3.4/el7/stable/noarch/RPMS/centreon-release-3.4-4.el7.centos.noarch.rpm
#Install Centreon
RUN yum install -y centreon-base-config-centreon-engine centreon centreon-pp-manager centreon-clapi
RUN yum install -y centreon-widget*
RUN yum clean all
#PHP Time Zone
RUN echo -n "date.timezone = Europe/Paris" > /etc/php.d/php-timezone.ini
#Supervisor
RUN yum install -y python-setuptools
RUN easy_install supervisor
COPY /cfg/supervisord.conf /etc/
RUN yum clean all
EXPOSE 22 80 5667 5669
CMD ["/usr/bin/supervisord", "--configuration=/etc/supervisord.conf"]
我看到的区别在于 / usr / lib / nagios / plugins文件夹。我在这里想念一些剧本。当我执行完全相同的命令,但在我正在运行的容器中,我可以找到我的文件。 也许它与为使用docker-compose执行命令的用户写入权限有关?
编辑: docker-compose文件:
version: "3"
services:
centreon:
build: ./centreon
depends_on:
- mariadb
container_name: sinelis-central
volumes:
- ./central-broker-config:/etc/centreon-broker
- ./central-centreon-plugins:/usr/lib/centreon/plugins
- ./central-engine-config:/etc/centreon-engine
- ./central-logs-broker:/var/log/centreon-broker
- ./central-logs-engine:/var/log/centreon-engine
- ./central-nagios-plugins:/usr/lib/nagios/plugins
- ./central-ssh-key:/home/centreon/.ssh/
ports:
- "80:80"
- "5667:5667"
- "5669:5669"
- "22:22"
deploy:
restart_policy:
window: 300s
links:
- mariadb
mariadb:
image: mariadb
container_name: sinelis-mariadb
environment:
MYSQL_ROOT_PASSWORD: passwd2017
deploy:
restart_policy:
window: 300s
要运行容器我使用 docker run -it centos:centos7 命令
答案 0 :(得分:1)
您在该位置放置图像并不重要,您将始终看到卷装的内容:
- ./central-nagios-plugins:/usr/lib/nagios/plugins
Docker不会将主机卷初始化为图像内容,一旦卷中有数据,docker就会使用任何卷类型进行初始化。
请记住,在没有应用compose文件中的任何其他配置的情况下,构建发生在图像上,没有安装任何卷供您更新。然后,当您运行容器时,使用您选择的卷覆盖图像的目录。构建时间和运行时间分为两个阶段。
编辑:要将指定的卷指向主机目录,可以定义绑定装入卷。如果目录尚不存在,则不会创建该目录(安装卷的尝试将失败,容器将无法启动)。但如果目录为空,则会将其初始化为图像内容:
version: "3"
volumes:
central-nagios-plugins:
driver: local
driver_opts:
type: none
o: bind
device: /usr/lib/nagios/plugins
services:
centreon:
....
volumes:
...
- central-nagios-plugins:/usr/lib/nagios/plugins
...
当您希望使用图像内容重新初始化此卷时,将由您清空此卷的内容,并且合并此目录的多个版本也是您需要创建的过程自己。