在fedora容器中systemctl给出了无法获得D-Bus连接

当我在一个Fedora容器systemctl使用时,我得到:

无法获得D-Bus连接::未知错误-1

有人知道如何解决这个问题吗? 或者systemctl不能用于docker集装箱?

systemctl命令通过DBus连接与systemd进行通信。 你在你的容器中运行systemd是不太可能的,所以systemctl没有什么可说的。

虽然有可能在一个容器中运行systemd ,但这样做往往(但并非总是)表明您需要重新考虑容器的体系结构。

我已经修复了类似的问题,请检查这个答案 。

主要思想是使/usr/sbin/init容器内的第一个进程

如前所述,标准systemctl需要SystemD。 但是对于像“systemctl enable”这样的命令或启动一个服务进程来说,一个没有运行SystemD的实际上就是这样做的。

“systemctl enable”实质上将查看sshd.service文件中的“WantedBy = multi-user.target”子句,然后在/etc/systemd/system/multi-user.target.wants/中创build一个符号链接。 相似地,“systemctl start”将在ssh.service文件中查找“ExecStart = / usr / bin / sshd”子句。

如果您不想查看并手动运行这些部分,则可以使用docker -systemctl-replacement中的 systemctl.py帮助程序,它可以为您解释systemd服务文件。