Centos
docker 無法獲得 D-Bus 連接:不允許操作
我在使用這個 Dockerfile 時遇到了這個錯誤:
FROM centos:latest ENV container docker MAINTAINER The CentOS Project <cloud-ops@centos.org> 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"]
嘗試使用其中一個
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
當我下載並執行
centos:latest
時,它給了我一個無法執行的 CentOS 8 Docker 容器systemd
。你需要做更多的工作才能開始systemd
工作,但你真的不需要一個 init 系統,因為 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
然後,您需要調整
zabbix-speedtest.service
併zabbix-speedtest.timer
從您將部署 Docker 容器的主機的上下文中執行。