Centos
未能獲得 D-Bus 連接:不允許操作
我正在嘗試使用在 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 的步驟:
- 拉取centos鏡像
- 設置一個 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"]
- 建造它 -
docker build -t centos7-systemd - < mydockerfile
- 執行一個容器
docker run --rm --privileged -ti -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup centos7-systemd /usr/sbin/init
- 您的容器中應該有 systemd