Dockerのイメージとしてsystemdが使えるCentOS7イメージを作りたいと思っているのですが、cgroupの知識がなく、Dockerfileの内容が理解できません。
以下は、dockerhub上のSystemd integrationで紹介されているbase imageの丸写しです。
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"]
この、VOLUME [ "/sys/fs/cgroup" ]
が何をやっているのかわかりません。
kubernetesで上記imageをpodにしましたが、CentOSの/sys/fs/cgroup
には
systemd
の空ディレクトリがあるのみで、
自分としては、
1、ホスト側の/sys/fs/cgroup
が丸っとマウントされるか
2、tasks
などのcgroupのファイルが作られるのか
と何となく思っていたので、混乱しました。
これは、一般的に期待されるように、コンテナごとにcgroupで切った後、そこからCentOSでinitが始まるように、うまいこと親cgroup(この場合CentOSのcontainer?)から継承されているということでいいのでしょうか。
また、kubernetesやDocker runなどでresourceを指定してあげた場合、CentOSのsystemdはそのリソースをサブシステムとして使うということでいいのでしょうか。
よろしくお願いします。
まだ回答がついていません
会員登録して回答してみよう