Sign inSign up

system386/centos-systemd

By system386

•Updated over 5 years ago

Image
0

25

system386/centos-systemd repository overview

⁠系统整合

现在,centos:7和centos:latest基本容器中都包含Systemd,但是默认情况下它不处于活动状态。为了使用systemd,您将需要包含类似于以下示例Dockerfile的文本:

⁠用于系统化基础映像的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"]

该Dockerfile删除了许多可能导致问题的单位文件。从这里,您就可以构建基础映像了。

$ docker build --rm -t local/c7-systemd .

⁠启用了systemd的示例应用程序容器

为了使用上面创建的启用systemd的基本容器,您将需要创建Dockerfile与下面类似的容器。

FROM local/c7-systemd
RUN yum -y install httpd; yum clean all; systemctl enable httpd.service
EXPOSE 80
CMD ["/usr/sbin/init"]

构建此镜像:

$ docker build --rm -t local/c7-systemd-httpd .

运行已启用systemd的应用程序容器 为了使用systemd运行容器,您将需要从主机挂载cgroups卷。下面是一个示例命令,它将运行先前创建的启用了systemd的httpd容器。

$ docker run -ti --privileged=true -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/c7-systemd-httpd

该容器在有限的上下文中与systemd一起运行,并安装了cgroups文件系统。有报道说,如果您使用的是Ubuntu主机,则-v /tmp/$(mktemp -d):/run除了cgroups挂载外,还需要添加其他内容。

Tag summary

Content type

Image

Digest

Size

72.6 MB

Last updated

over 5 years ago

docker pull system386/centos-systemd:7.9.2009