Failed to get D-Bus connection: Operation not permitted —解决Docker中CentOS镜像无法使用systemd的问题-阿里云开发者社区

开发者社区> 开发与运维> 正文

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

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

我的个人网站

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

版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章