過去問ドリル

LinuCレベル3 セキュリティスペシャリスト 堅牢なコンテナ設計 問8

堅牢なコンテナ設計/Rootless モード

RootlessモードのDockerで、docker run に --memory 512m --cpus 1 を指定してコンテナを起動したが、指定した上限が効かずに無視された。Rootlessモードでこれらの上限を効かせるための前提条件として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「堅牢なコンテナ設計」に対応。実際の試験問題ではありません)

正解:C

解説

RootlessモードのDockerで --cpus・--memory・--pids-limit などのcgroupによる制限を使えるのは、ホストがcgroup v2で動作し、systemdで管理されている場合に限られます。cgroup v1のホストでは、これらの指定は想定どおり無視されます。さらに、一般ユーザーに委譲されていないコントローラは使えません。systemd 252以降(RHEL 9・Debian 12・Ubuntu 24.04)では memory・pids・cpu が既定で委譲されますが、cpuset や io も使うには [email protected] のドロップインで Delegate= を設定します。RHEL 9やUbuntu 24.04は既定でcgroup v2を使います。

選択肢ごとの解説

  • A誤り。/etc/subuid 等はUID・GIDの対応付けの範囲を決めるもので、リソース制限の可否には関係しません。
  • B誤り。enable-linger はログアウト後もユーザーのsystemdを動かし続ける設定で、cgroupによる制限を有効にするものではありません。
  • C正しい。cgroup v2とsystemdが前提で、使うコントローラがユーザーへ委譲されている必要もあります。
  • D誤り。cgroup v2とsystemdの環境であれば、Rootlessモードでもcgroupによるリソース制限を使えます。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く