1.解决Docker中CentOS镜像无法使用systemd的问题
如果这让你觉得麻烦,那么你可以直接跳到本文第二部分开始阅读
-
创建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
-
下载镜像并命名为centos-systemd:7
cd /root/centos-systemd
docker build --rm -t centos-systemd:7 .
-
通过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
-
连接到名为centos-systemd的容器
docker exec -i -t centos-systemd /bin/bash
-
测试systemd启动是否成功
systemctl --help
2.使用已经创建好的镜像(本文第二部分)
-
也可以下载我已经做好的一个支持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