クラウドとコンテナの基礎
Linuxのコンテナを実現するカーネルの機能のうち、名前空間(namespaces)とcgroups(コントロールグループ)の役割の組み合わせとして、正しいものはどれか。
- A名前空間:プロセスから見えるもの(プロセスID、ネットワーク、マウントなど)を分ける、cgroups:CPUやメモリなどの資源の使用量を制限・計測する
- B名前空間:CPUやメモリなどの資源の使用量を制限・計測する、cgroups:プロセスから見えるもの(プロセスID、ネットワーク、マウントなど)を分ける
- C名前空間:コンテナごとに別のカーネルを起動して互いを隔離する、cgroups:コンテナごとに仮想的なCPUを作り、ハードウェアを模倣する
答えと解説を見る
正解:A. 名前空間:プロセスから見えるもの(プロセスID、ネットワーク、マウントなど)を分ける、cgroups:CPUやメモリなどの資源の使用量を制限・計測する
コンテナは、ホストのカーネルの上で動く普通のプロセスに、2つの仕組みで隔離をかけたものです。名前空間は、プロセスID、ネットワーク、マウント(ファイルシステムの見え方)、ホスト名などをグループごとに分け、コンテナの中のプロセスには自分たちの分だけが見えるようにします。cgroupsは、プロセスのグループが使えるCPUの時間やメモリの量を制限し、使用量を計測します。どちらもカーネルの機能なので、コンテナは別のカーネルを起動せず、ハードウェアを模倣することもありません。
- A. 正しい。名前空間が「見え方」を、cgroupsが「使える量」を受け持ちます。
- B. 役割が逆です。資源の量を制限するのがcgroupsで、見え方を分けるのが名前空間です。
- C. 別のカーネルを動かしたりハードウェアを模倣したりするのは、ハイパーバイザを使う仮想マシンの方式です。コンテナはホストのカーネルを共有します。