docker - Docker 系统尚未使用 systemd 作为 init 系统启动
问题描述
我的 docker 容器上运行了一个 Ubuntu 18.04 映像。我登录并安装了Openresty
. 也安装了systemd
。当我使用命令时systemctl
,我收到此错误:
System has not been booted with systemd as init system (PID 1). Can't operate.
我该如何解决?
解决方案
如果我理解 OP,他正在尝试在容器中运行 systemctl。这不起作用,因为 systemd 一开始就没有在容器中运行。它不能在非特权容器中完成。SO中还有另一个问题是关于为什么他不应该在容器中运行 systemd。
我很快用谷歌搜索并找到了这个 2014 年关于在 docker 容器中使用 systemd 的页面,其中有一个简短的解释。解决方法是使用特权容器(运行docker run --privileged ...
),这可以说是一个坏主意,但可能适合 OP。上一篇文章有 2019 年的更新,底线是他们开发了自己的容器引擎(所以没有 docker)。
显而易见的解决方案是拥有一个服务,因此不需要 systemd,尽管在 OP 的情况下这可能是不可能的。
总之,可能的解决方案:
- 不使用 systemd
- 使用特权容器
- 不要使用码头工人
推荐阅读
- sql - 找出每个学生的最高分
- amazon-web-services - Crawler 正在创建一个名称带有奇怪后缀的表
- azure-servicebus-topics - MessageReceiver2topic/Subscriptions/mutationProcessor' 被强制分离
- powershell - 将双引号添加到以逗号分隔的所有列,但不添加已包含在双引号中的逗号
- asp.net-core - 在大型项目中的 Azure DevOps 中创建管道
- apache-spark - 从dataFrame保存表中的现有项目
- python - 根据匹配更改列中的值
- android - 致命异常:java.lang.IllegalStateException no event down from INITIALIZED
- javascript - ReactJS 和 Firebase 配额通过小数据快速达到
- sql - MSSQL 日期格式