尝试在ubuntu 16.04 docker容器中运行以下命令
root@mytest:/Linux_Insight_Agent# systemctl start ir_agent.service
我已经安装了neede软件包,但在启动服务之后,问题就出现了。
Failed to connect to bus: No such file or directory
答案 0 :(得分:0)
我有同样的情况
在我的情况下,我通过使用--volume
参数运行docker来解决。
示例:
docker run -it \
--volume /sys/fs/cgroup:/sys/fs/cgroup:ro \
--rm IMAGE /bin/bash
我希望能帮到你......
答案 1 :(得分:0)
那是因为“systemctl”通过使用d-bus与systemd守护进程通信。在容器中没有systemd-daemon。要求开始可能不会完全按照您的预期进行 - 开发映射需要更长一些。
另一种解决方案可能是在here脚本的帮助下避免使用systemd守护程序。但它会覆盖默认的systemctl。
答案 2 :(得分:0)
https://itectec.com/ubuntu/ubuntu-systemctl-failed-to-connect-to-bus-docker-ubuntu16-04-container/
上面的链接提到了以下有意义的内容:
最佳答案
我假设您以类似的方式启动Docker容器
docker run -t -i ubuntu:16.04 /bin/bash
现在的问题是您的初始化进程PID 1是/ bin / bash,而不是systemd。用ps aux确认。
除了缺少dbus之外,它还是通信的方式。这是您的错误消息来源。但是由于您的PID 1没有systemd,因此将无法安装dbus。
最好是重新考虑您打算使用docker的方式。不要依赖systemd作为进程管理器,而要让Docker容器在前台运行所需的应用程序。
此脚本可用于覆盖“ / usr / bin / systemctl”。 它将在没有SystemD的情况下执行systemctl命令!