為了繼續探索,我們可以添加更多的東西,比如自動啟動服務。但是,這里我們會碰到使用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初始化系統,它在容器中運行,需要有對應的行為。