為了繼續(xù)探索,我們可以添加更多的東西,比如自動(dòng)啟動(dòng)服務(wù)。但是,這里我們會(huì)碰到使用Docker去模擬物理機(jī)或虛擬機(jī)的限制。Docker畢竟是一種容器技術(shù),不是全面的虛擬化系統(tǒng)。在Docker的常見使用場景下,這點(diǎn)并不重要,但是在我們的使用場景下,需要做一些變通才能繼續(xù)。主要的問題是systemd初始化系統(tǒng)在容器中運(yùn)行需要特殊照顧。
Red Hat的開發(fā)人員想出了解決的辦法。下面是一個(gè)少許修改的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這個(gè)環(huán)境變量用來告訴systemd初始化系統(tǒng),它在容器中運(yùn)行,需要有對(duì)應(yīng)的行為。