天天看点

Linux Docker systemctl 命令无法使用的解决方案

据说在 \text{Linux Docker} 中无法使用 \text{systemd(systemctl)} 相关命令的原因是 0 号进程不是 \text{init} ,而是其他例如 \text{/bin/bash} ,所以导致缺少相关文件无法运行。

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

例如 \text{CentOS 7} ,

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

复制

再例如 \text{Ubuntu 16.04} ,

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

复制

需要注意的是,第一个命令除了要通过 \text{init} 后台启动 \text{docker} 容器以外, \text{--privileged=true} 是必须的。