为了继续探索,我们可以添加更多的东西,比如自动启动服务。但是,这里我们会碰到使用Docker去模拟物理机或虚拟机的限制。Docker毕竟是一种容器技术,不是全面的虚拟化系统。在Docker的常见使用场景下,这点并不重要,但是在我们的使用场景下,需要做一些变通才能继续。主要的问题是systemd初始化系统在容器中运行需要特殊照顾。
Red Hat的开发人员想出了解决的办法。下面是一个少许修改的Docker镜像版本,来自于Red Hat工作的Vaclav PavlinFROM fedora
RUN yum -y update; yum clean all
RUN yum install ansible sudo
RUN systemctl mask systemd- remount- f s . service dev-hugepages .mount sys-
f s-fuse-connections .mount systemd-logind. service getty. target cons ole-
getty. service
RUN cp /usr/lib/systemd/system/dbus.service /etc/systemd/system/; sed
-i ' s/OOMScoreAdj ust'-- 900// ' /etc/systemd/system/dbus . service
VOLUME [ "/sys/fs/cgroup " , "/run" , " /tmp " ]
ENV container=-docker
CMD [ "/usr/sbin/init" ]
container这个环境变量用来告诉systemd初始化系统,它在容器中运行,需要有对应的行为。