gpt4 book ai didi

Docker-compose build 缺少容器中的一些包内容

转载 作者:行者123 更新时间:2023-12-02 21:18:30 24 4
gpt4 key购买 nike

我正在利用监控应用程序(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 撰写文件:
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 命令

最佳答案

无论您在该位置放入镜像中的什么内容,都将始终看到卷挂载的内容:

  - ./central-nagios-plugins:/usr/lib/nagios/plugins

Docker 不会将主机卷初始化为镜像的内容,一旦卷中有数据,docker 就会对任何卷类型进行初始化。

请记住,构建发生在未应用 compose 文件中的任何其他配置的镜像上,没有安装卷供您更新。然后,当您运行容器时,您将使用您选择的卷覆盖图像的目录。构建时间和运行时间是两个独立的阶段。

编辑:要让命名卷指向主机目录,您可以定义绑定(bind)挂载卷。如果目录尚不存在,则不会创建该目录(挂载卷的尝试将失败并且容器不会启动)。但是如果目录是空的,它将被初始化为你的图像的内容:
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
...

当您希望使用镜像的内容重新初始化此卷的内容时,您可以自行清空该卷的内容,并且合并此目录的多个版本也将是您需要自己创建的过程。

关于Docker-compose build 缺少容器中的一些包内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48689835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com