CentOS7的docker默认情况下是不能够执行systemctl命令的,抛出以下错误:Failed to get D-Bus connection: Operation not permitted
从CentOS的官网上可以查询到解决该问题的办法,使用Dockerfile的方式来构建centos7的image。
1. CentOS7的Dockerfile Dockerfile的具体内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 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/*; \yum -y install openssh-server; \ yum -y install openssh-clients; \ yum -y install net-tools; \ yum clean all; VOLUME [ "/sys/fs/cgroup" ] CMD ["/usr/sbin/init" ]
执行命令如下命令即可完成centos7的image的构建
1 $ docker build --rm -t centos7:base .
2. 运行CentOS7的Container 在构建完成之后,执行以下命令,即可运行
1 $ docker run --name centos_test -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged -itd centos7:base
进入centos_test容器内部
1 $ docker exec -it test bash
启动ssh,不再报错,构建成功。