【发布时间】:2025-12-06 00:20:06
【问题描述】:
我正在尝试执行使用 'ubuntu:latest' 构建的 Docker 映像,并且在运行容器时不断收到 SystemD 错误消息:
System has not been booted with systemd as init system (PID 1). Can't operate.
如果我尝试这个 solution 并使用 docker run -it -e container=docker your-image-name /sbin/init 生成容器,我会收到以下错误:
Failed to mount tmpfs at /run: Operation not permitted
Failed to mount tmpfs at /run/lock: Operation not permitted
[!!!!!!] Failed to mount API filesystems, freezing.
Freezing execution.
我应该尝试什么不同的方法?
【问题讨论】:
-
您通常不想在容器内运行像 systemd(或其他任何东西)这样的进程管理器。你到底想做什么?
-
我正在尝试启动 Nginx 和 SSHD 容器。如果所有 Linux 发行版都已经迁移到 SystemD,你如何避免使用它?似乎这是一个应该已经解决的问题?
-
已经解决了。您不在容器中使用处理器管理器。你启动你想要的服务,就是这样。看看任何官方容器,比如 nginx、httpd、mysql 等。你不会在容器中运行 ssh;这就是
docker exec的用途。 -
嗯,好的,谢谢。我需要 SSH,因为我使用 Ansible 向它发送配置文件。 :)
-
听起来您像管理虚拟机一样管理容器。我强烈建议不要这样做。你应该用 ansible 做的最多的事情就是构建一个镜像并运行容器。