天天看點

Failed to get D-Bus connection: Operation not permitted —解決Docker中CentOS鏡像無法使用systemd的問題

我的個人網站

1.解決Docker中CentOS鏡像無法使用systemd的問題

如果這讓你覺得麻煩,那麼你可以直接跳到 本文第二部分 開始閱讀
  1. 建立DockerFile
    mkdir /root/centos-systemd
    cd /root/centos-systemd
    vim DockerFile
    
    FROM centos:7
    ENV container docker
    RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
    rm -f /lib/systemd/system/multi-user.target.wants/*;\
    rm -f /etc/systemd/system/*.wants/*;\
    rm -f /lib/systemd/system/local-fs.target.wants/*; \
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
    rm -f /lib/systemd/system/basic.target.wants/*;\
    rm -f /lib/systemd/system/anaconda.target.wants/*;
    VOLUME [ "/sys/fs/cgroup" ]
    CMD ["/usr/sbin/init"]
    
    ESC
    :wq           
  2. 下載下傳鏡像并命名為centos-systemd:7
    cd /root/centos-systemd
    docker build --rm -t centos-systemd:7 .           
  3. 通過centos-systemd:7鏡像生成一個名為centos-systemd的容器
    docker run -d -i -t --privileged=true --name centos-systemd -v /sys/fs/cgroup:/sys/fs/cgroup:ro centos-systemd:7           
  4. 連接配接到名為centos-systemd的容器
    docker exec -i -t centos-systemd /bin/bash           
  5. 測試systemd啟動是否成功
    systemctl --help           

2.使用已經建立好的鏡像(本文第二部分)

  1. 也可以下載下傳我已經做好的一個支援systemd的鏡像
    # 下載下傳鏡像
    docker pull 2233466866/centos-systemd
    # 通過鏡像運作一個名為test的容器
    docker run -dit -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name=test --privileged=true 2233466866/centos-systemd           

繼續閱讀