【问题标题】:Systemctl command getting this error: Failed to et D-bus: Unkknown error -1 | Docker OpensuseSystemctl 命令收到此错误: Failed to et D-bus: Unkknown error -1 | Docker Opensuse
【发布时间】:2018-07-08 09:42:32
【问题描述】:

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

这里没有提到具体需要做什么。请帮忙,我被这个问题困住了。

【问题讨论】:

  • 就我个人而言,我会避免在任何容器中使用 cronjobs,因为 cron 的历史优势已被容器本身的概念所取代……如果您需要对容器友好的东西,我建议使用 supervisord 作为父级在容器内启动的子进程数

标签: linux docker systemd docker-container systemctl


【解决方案1】:

大致而言,systemctlinitctlservicestart 之类的命令在 Docker 中不起作用,您应该找到不同的方法来执行您正在尝试的操作。

从风格上讲,使用 Docker 容器的标准方法是在前台启动某种服务。作为一个具体的例子,standard Redis image 没有经过任何类型的初始化脚本;它只是运行

CMD ["redis-server"]

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

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

【讨论】:

    猜你喜欢
    • 2019-07-24
    • 2015-04-24
    • 2023-02-15
    • 2017-11-03
    • 2017-03-24
    • 2022-11-12
    • 2021-01-27
    • 1970-01-01
    • 2018-02-08
    相关资源
    最近更新 更多