docker가 D-Bus 연결을 얻을 수 없습니다. 작업이 허용되지 않습니다.

docker가 D-Bus 연결을 얻을 수 없습니다. 작업이 허용되지 않습니다.

이 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

관련 정보