基于CentOS7官方Docker镜像构建自己的镜像

CentOS7官方的镜像直接使用会有一些问题,比如

  1. 不能用systemctl
  2. 各种权限问题
  3. attach后不能执行操作且退不出

问题太多基本不能用,所以要构建自己的镜像。

好在CentOS官方在Docker Hub上给出了相关说明。

总结下来是这样的。

步骤

  1. 创建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"]
  1. 在上面的目录下执行以下操作,从而创建自己的centos7镜像
docker build --rm -t local/c7-systemd .

执行成功后我们就可以使用 docker images命令看到创建好的镜像。

  1. 创建Docker Container
docker run -tid  --name centos7 local/c7-systemd

就是这么简单,不需要--privileged -v /sys/fs/cgroup:/sys/fup:ro之类的参数。

最后一个参数 /usr/sbin/init不可少,用于初始化权限。

  1. 不要直接attach,转而使用如下命令进入容器操作
docker exec -it centos7 /bin/bash
  1. 镜像、容器创建完成

之后怎么发展,看自己的了。

1 thought on “基于CentOS7官方Docker镜像构建自己的镜像”

Leave a Comment

豫ICP备19001387号-1