首页 > 解决方案 > Systemctl 命令收到此错误:无法 et D-bus:未知错误 -1 | Docker Opensuse

问题描述

opensuse docker 容器中cronjob 不工作。当我尝试systemctl命令时出现此错误:Failed to et D-bus: Unknown error -1。我到处尝试了很多博客和stackoverflow问题,建议应该重新设计Docker镜像的基本架构。

这里没有提到具体需要做什么。请帮助,我被困在这个问题上。

标签: linuxdockersystemddocker-containersystemctl

解决方案


大致来说,像systemctl, initctl, service, 或start只是在 Docker 中不起作用的命令,你应该找到一种不同的方法来做你正在尝试的事情。

Stylewise,使用 Docker 容器的标准方法是在前台启动某种服务。举一个具体的例子,标准的 Redis 镜像不经过任何类型的初始化脚本。它只是运行

CMD ["redis-server"]

在大多数 Docker 映像中,甚至启动后台进程(使用 shell&操作符)都是不寻常的。这通常不是必需的,在 Dockerfiles 中与RUN指令的交互使一些人感到困惑。

在特定的情况下systemctl,它需要一个非常重量级的 init 系统,它不仅是一个进程管理器,而且还想要监视和管理内核级别的参数,包括一个日志系统,运行一个进程间消息总线,以及一些其他功能。如果没有容器,就无法在 Docker 下运行 systemd --privileged,这使容器能够以某些不幸的方式“逃逸”到主机系统上。


推荐阅读