Failed to get D-Bus connection: Operation not permitted —解决Docker中CentOS镜像无法使用systemd的问题

解决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
  6.   也可以下载我已经做好的一个支持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

希望能抽中今年锦鲤大奖