過去問ドリル

LinuCレベル2 コンテナ 問12

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

コンテナ内でpsを実行すると、アプリケーションのプロセスがPID 1として表示された。一方、ホストでpsを実行すると同じプロセスは別のPIDで表示された。この理由の説明として適切なものはどれか。

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

正解:A

解説

PID名前空間は、プロセスIDの番号体系を分離する名前空間です。新しいPID名前空間で最初に起動したプロセスはその中でPID 1となり、親の名前空間(ホスト)からは通常のPIDで見えます。コンテナ内のPID 1はinitと同じく、孤児プロセスの回収やシグナルの扱いに特別な責任を持つため、docker run --initのように小さなinitを挟むこともあります。

選択肢ごとの解説

  • A正しい。PID名前空間で番号体系が分かれるため、同じプロセスがコンテナ内とホストで別のPIDになります。
  • B誤り。コンテナはホストのカーネルを共有しており、コンテナごとにカーネルが起動するわけではありません。
  • C誤り。cgroupsはCPUやメモリ等のリソース使用量を制限・計測する仕組みで、PIDの番号を変えるものではありません。
  • D誤り。chrootはルートディレクトリを変えるだけで、PIDの番号体系は分離しません。
LinuCレベル2の問題を演習モードで解く