终于找到了docker里面没有办法使用systemctl的解决方法了

之前看到的方案都是说在启动容器的时候添加–privileged=true就可以了。试了n遍,问题还是没有解决,奔溃了一段时间,继续找答案。发现了一个说法是:据说在 Linux Docker 中无法使用 systemd(systemctl) 相关命令的原因是 0 号进程不是 init,而是其他例如 /bin/bash ,所以导致缺少相关文件无法运行。

具体的解决方案是通过 init 在后台运行一个 docker容器,然后再通过 exec 的方式进入到容器中,不过需要注意的是不同的系统 init 程序的路径不同。

例如 CentOS 7 ,

docker run -tid --name test --privileged=true centos:latest /usr/sbin/init
docker exec -it test /bin/bash

再例如 Ubuntu 16.04

docker run -tid --name test_2 --privileged=true ubuntu:16.04 /sbin/init
docker exec -it test_2 /bin/bash

总结下来就是:

  • 启动容器的时候添加–privileged=true
  • 通过 init 在后台运行一个 docker容器

你可能感兴趣的:(工具使用,docker,容器,运维)