이 Dockerfile을 사용할 때 다음 오류가 발생합니다.
FROM centos:latest
ENV container docker
MAINTAINER The CentOS Project <[email protected]>
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
RUN rpm -U https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
RUN yum -y install zabbix-agent
RUN yum clean all
COPY ./zbx-speedtest.sh /etc/zabbix/bin/zbx-speedtest.sh
RUN chmod +x /etc/zabbix/bin/zbx-speedtest.sh
COPY ./speedtest.conf /etc/zabbix/zabbix_agentd.d/speedtest.conf
COPY ./zabbix-speedtest.service /etc/systemd/system/zabbix-speedtest.service
COPY ./zabbix-speedtest.timer /etc/systemd/system/zabbix-speedtest.timer
RUN systemctl enable zabbix-speedtest.timer
RUN systemctl enable zabbix-agent.service
RUN systemctl start zabbix-agent.service
RUN systemctl start zabbix-speedtest.timer
CMD ["/usr/sbin/init"]
or를 사용하려고 할 때 다음 오류가 docker-compose
발생 docker build
합니다.
Failed to get D-Bus connection: Operation not permitted
ERROR: Service 'zbx' failed to build: The command '/bin/sh -c systemctl start zabbix-agent.service' returned a non-zero code: 1
주위를 둘러보았으나 해결책이 없습니다. Docker를 사용하여 이것이 가능하지 않은 경우 이를 수행하기 위해 어떤 컨테이너를 배워야 하는지 알려주십시오.
zabbix-speedtest.timer
[Unit]
Description=Run a speedtest every 5 minutes
[Timer]
OnCalendar=*:0/5
# RandomizedDelaySec=30
[Install]
WantedBy=timers.target
zabbix-speedtest.service
[Unit]
Description=Run a speedtest
After=network.target
[Service]
Type=simple
#User=zabbix-agent
#User=root
User=zabbix
ExecStart=/etc/zabbix/bin/zbx-speedtest.sh --run
CPUSchedulingPolicy=fifo
CPUSchedulingPriority=80
[Install]
WantedBy=multi-user.target
답변1
다운로드하여 실행하면 centos:latest
실행되지 않는 CentOS 8 Docker 컨테이너가 제공됩니다 systemd
. 시작하려면 좀 더 많은 작업이 필요 systemd
하지만 Docker는 컨테이너 내에서 단일 프로세스를 실행하도록 설계되었으므로 실제로 초기화 시스템이 필요하지 않습니다.
보고 있다Zabbix가 생성한 Zabbix Agent Dockerfile, 사용을 시도하지 않습니다 systemd
.
사용해 보시고 zabbix/zabbix-agent:centos-5.0-latest
더 잘 작동하는지 확인해 보셨나요?
댓글 후 업데이트:
이러한 제안을 사용한 후 Dockerfile은 다음과 같을 수 있습니다.
FROM zabbix/zabbix-agent:centos-5.0-latest
ENV container docker
COPY ./zbx-speedtest.sh /etc/zabbix/bin/zbx-speedtest.sh
RUN chmod +x /etc/zabbix/bin/zbx-speedtest.sh
COPY ./speedtest.conf /etc/zabbix/zabbix_agentd.d/speedtest.conf
그런 다음 Docker 컨테이너를 배포하려는 호스트의 컨텍스트에서 조정 zabbix-speedtest.service
하고 실행 해야 합니다 .zabbix-speedtest.timer