過去問ドリル

LinuCレベル2 コンテナ 問16

コンテナ/コンテナの仕組み

cgroup v2で動作している現行のディストリビューションで、コンテナのプロセスが属するcgroupのmemory.maxやcpu.max等のインタフェースファイルが置かれている場所として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル2の出題範囲「コンテナ」に対応。実際の試験問題ではありません)

正解: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の値)を設定するファイルの置き場です。
LinuCレベル2の問題を演習モードで解く