天天看點

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} 是必須的。