LinuCレベル2 コンテナ 問16
コンテナ/コンテナの仕組みcgroup v2で動作している現行のディストリビューションで、コンテナのプロセスが属するcgroupのmemory.maxやcpu.max等のインタフェースファイルが置かれている場所として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル2の出題範囲「コンテナ」に対応。実際の試験問題ではありません)
- A/proc/sys/kernel/ 以下
- B/sys/fs/cgroup/ 以下
- C/var/lib/docker/containers/ 以下
- D/etc/security/limits.d/ 以下
正解:B
解説
cgroup v2では、cgroupの階層がcgroup2ファイルシステムとして/sys/fs/cgroup/にマウントされ、各cgroupがディレクトリ、上限値等の設定がその中のファイルとして表されます。例えばDockerがsystemdのcgroupドライバを使う場合、コンテナはsystem.slice/docker-<コンテナID>.scopeのような階層に置かれます。あるプロセスがどのcgroupに属しているかは、/proc/<PID>/cgroupで確認できます。
選択肢ごとの解説
- A誤り。/proc/sys/kernel/は、sysctlで参照・変更するカーネルパラメータのうちkernel.*に当たるものが置かれる場所です。cgroupの階層ではありません。
- B正しい。cgroup v2の階層は/sys/fs/cgroup/にマウントされ、各cgroupのディレクトリにmemory.max等のファイルが置かれます。
- C誤り。/var/lib/docker/containers/は、Dockerがコンテナごとの設定ファイルやログ等を保存する場所です。cgroupのインタフェースファイルではありません。
- D誤り。/etc/security/limits.d/は、pam_limitsによるユーザーごとのリソース制限(ulimitの値)を設定するファイルの置き場です。