-----System has not been booted with systemd as init system (PID 1). Can‘t operat

报错现象如下

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

解决方案一

检查启动命令 加参数 -itd --privileged 如果dockerfile中CMD中没有执行 要在后面命令加/usr/sbin/init

dockerun --privileged -itd --name systemctl3 -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemctl:test

解决方案二

重启一个docker在后台运行 执行上面的命令 dockerun --privileged -itd --name systemctl3 -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemctl:test

原因详解

–privateged 使container内的root拥有真正的root权限,不进行降权处理。否则,容器内的用户只是外部的一个普通用户,普通用户还想访问内核?让systemctl管理系统? 而且默认情况下,在第一步执行的是 /bin/bash 所以我们使用了 /usr/sbin/init覆盖/bin/bash

同时 只能使用 docker exec -it systemctl5 /bin/bash 因为 exec 可以让我们执行被覆盖掉的默认命令 /bin/bash 同时 -it 也是必须的。

posted @   zhuguoqing  阅读(9942)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示