linux - Systemctl 命令收到此错误:无法 et D-bus:未知错误 -1 | Docker Opensuse
问题描述
在opensuse docker 容器中,cronjob 不工作。当我尝试systemctl命令时出现此错误:Failed to et D-bus: Unknown error -1。我到处尝试了很多博客和stackoverflow问题,建议应该重新设计Docker镜像的基本架构。
这里没有提到具体需要做什么。请帮助,我被困在这个问题上。
解决方案
大致来说,像systemctl
, initctl
, service
, 或start
只是在 Docker 中不起作用的命令,你应该找到一种不同的方法来做你正在尝试的事情。
Stylewise,使用 Docker 容器的标准方法是在前台启动某种服务。举一个具体的例子,标准的 Redis 镜像不经过任何类型的初始化脚本。它只是运行
CMD ["redis-server"]
在大多数 Docker 映像中,甚至启动后台进程(使用 shell&
操作符)都是不寻常的。这通常不是必需的,在 Dockerfiles 中与RUN
指令的交互使一些人感到困惑。
在特定的情况下systemctl
,它需要一个非常重量级的 init 系统,它不仅是一个进程管理器,而且还想要监视和管理内核级别的参数,包括一个日志系统,运行一个进程间消息总线,以及一些其他功能。如果没有容器,就无法在 Docker 下运行 systemd --privileged
,这使容器能够以某些不幸的方式“逃逸”到主机系统上。
推荐阅读
- postgresql - 如何在 Docker 容器之间建立连接
- google-apps-script - Google Apps 脚本 TeamDrive DriveApp.searchFolders 和 DriveApp.searchFiles 不返回任何结果
- javascript - 如何在反应上导出2个箭头功能
- python - 如何将具有值默认字典的字典字符串转换为实际字典
- mysql - mysql铸造怪异
- javascript - 进入这个方法 keyPress 但我没有看到任何控制台打印
- python - 找不到烧瓶 404
- ruby-on-rails - ActiveRecord::NoDatabaseError: FATAL: 数据库“aquastarsbackend_development”不存在
- javascript - 类型 Map 的好名字是什么
,T>? - amazon-web-services - Kubernetes多节点集群cpu不足