Centos

未能獲得 D-Bus 連接:不允許操作

  • May 7, 2022

我正在嘗試使用在 Docker 中執行的 CentOS 映像上列出服務

systemctl list-units  

但我收到此錯誤消息:

Failed to get D-Bus connection: Operation not permitted

有什麼建議可能是什麼問題?

我的猜測是你正在執行一個non-privileged容器。systemd 需要 CAP_SYS_ADMIN 功能,但 Docker 在非特權容器中放棄了該功能,以增加安全性。

systemd 還需要對容器內的 cgroup 文件系統進行 RO 訪問。你可以添加它–v /sys/fs/cgroup:/sys/fs/cgroup:ro

因此,這裡有一些關於如何在 Docker 容器中使用 systemd 執行 CentOS 的步驟:

  1. 拉取centos鏡像
  2. 設置一個 docker 文件,如下所示:
FROM centos
MAINTAINER "Yourname" <youremail@address.com>
ENV container docker
RUN yum -y update; yum clean all
RUN yum -y install systemd; yum clean all; \
(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" ]
CMD ["/usr/sbin/init"]
  1. 建造它 -docker build -t centos7-systemd - < mydockerfile
  2. 執行一個容器docker run --rm --privileged -ti -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup centos7-systemd /usr/sbin/init
  3. 您的容器中應該有 systemd

引用自:https://serverfault.com/questions/824975