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

qq2233466866 2019-01-23

docker 镜像 容器 centos volume service cmd Bash systemd systemctl

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
登录 后评论
下一篇
corcosa
16977人浏览
2019-10-08
相关推荐
docker容器里安装ssh
791人浏览
2017-11-08 09:13:00
Kirk/Docker的故障排除
24872人浏览
2017-11-12 03:19:00
Docker部署MySQL8 MGR
2930人浏览
2018-09-14 11:57:17
1
1
0
4352