docker 容器使用 systemctl 命令是報錯


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

      創建完成后: 請使用以下命令進入容器

      docker exec -it myCentos /bin/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 也是必須的。

       對於ubuntu 也類似,可能init 目錄不太相同

當然具體什么bug 我是不知道的,期望以后會會修復

 

docker run -itd --privileged --name centos8-bt-lnmp-py3_3 -p 8889:8888 -p 8088:8088 -v /py:/py a6f39b20e7cb /usr/sbin/init

$ docker run -d -p 4433:443 -p 8088:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
# -d:后台運行
# -p:將容器內部端口向外映射
# --name:命名容器名稱
# -v:將容器內數據文件夾或者日志、配置等文件夾掛載到宿主機指定目錄

$ docker run -itd -p 443:443 -p 8080:80 -p 222:22 --name gitlab --restart always -v /d/gitlab/config:/etc/gitlab -v /d/gitlab/logs:/var/log/gitlab -v /d/gitlab/data:/var/opt/gitlab a7d268d6398b
# -d:后台運行
# -p:將容器內部端口向外映射
# --name:命名容器名稱
# -v:將容器內數據文件夾或者日志、配置等文件夾掛載到宿主機指定目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM