initctl:无法连接到 Upstart:无法连接到套接字 /com/ubuntu/upstart:docker 图像中的连接被拒绝

initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused in docker image

我得到

$ sudo initctl list
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused

在 docker 图像上

$ uname -a
Linux 7276b783e0bf 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/redhat-release
CentOS release 6.10 (Final)

知道发生了什么事吗?我还以为CentOS6默认用的是Upstart

您应该大致假设像 initctl(以及 systemctlservice)这样的命令在 Docker 中不起作用。如果您尝试在 运行 Docker 容器中以交互方式启动一些新服务,这通常不是最佳做法:您需要编写一个 Docker 文件来启动服务当容器启动时它自己的,通常只是 运行 服务器作为前台进程。

一个Docker 容器运行一个 进程(及其子进程)。通常这不是 init 类型的进程。如果您 docker run --rm -it centos:6 并获得 GNU bash shell,那么 shell 是 only 进程,即 运行容器。 Upstart、systemd 和它们启动的其他各种系统守护进程将不存在。 (在 shell 中尝试 ps -e 看看。)

如果你的实际问题是"what Upstart-managed services are running in my CentOS 6 container",答案是"none"。