CentOS7官方的镜像直接使用会有一些问题,比如
- 不能用
systemctl
- 各种权限问题
- attach后不能执行操作且退不出
问题太多基本不能用,所以要构建自己的镜像。
好在CentOS官方在Docker Hub上给出了相关说明。
总结下来是这样的。
步骤
- 创建Dockerfile
新建一目录,比如/root/centos,cd
到该目录,并创建名为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"]
- 在上面的目录下执行以下操作,从而创建自己的centos7镜像
docker build --rm -t local/c7-systemd .
执行成功后我们就可以使用 docker images
命令看到创建好的镜像。
- 创建Docker Container
docker run -tid --name centos7 local/c7-systemd
就是这么简单,不需要--privileged
-v /sys/fs/cgroup:/sys/fup:ro
之类的参数。
最后一个参数 /usr/sbin/init
不可少,用于初始化权限。
- 不要直接
attach
,转而使用如下命令进入容器操作
docker exec -it centos7 /bin/bash
- 镜像、容器创建完成
之后怎么发展,看自己的了。
1 thought on “基于CentOS7官方Docker镜像构建自己的镜像”