跳至正文
来自: 首页 » Coder Life » Docker » 【转改】docker 容器使用 systemctl 命令时报错

【转改】docker 容器使用 systemctl 命令时报错

原文链接:《Ginfoo · docker 容器使用 systemctl 命令是报错


报错内容

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

解决方法

docker run -itd --privileged --name myCentos centos /usr/sbin/init
# --privileged 是特权模式,开启了才能使用 systemctl
# -d 是守护模式,开启之后,退出容器时,不会关闭容器

创建完成后,使用以下命令进入容器

docker exec -it myCentos bash

原因

默认情况下,在第一步执行的是 /bin/bash,而因为 docker 中的 bug,无法使用 systemctl

所以我们使用了 /usr/sbin/init ,同时 --privileged 这样就能够使用 systemctl 了,但覆盖了默认的 /bin/bash

因此我们如果想进入容器,就不能再使用 docker attach myCentos,而只能使用  docker exec -it myCentos /bin/bash,  因为 exec 可以让我们执行被覆盖掉的默认命令 /bin/bash 。

同时 -it 也是必须的。

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据