コンテナ型仮想化
コンテナ型仮想化の特徴として,適切なものはどれか。
- アアプリケーションとその実行に必要なライブラリなどがイメージにまとめられていないので,別のホストで動かすには同じミドルウェアを事前に導入しておく必要がある。
- イコンテナ間で CPU やメモリなどの資源を分割せずに共有するので,コンテナごとに資源の使用量を制限することはできない。
- ウホスト OS のカーネルを共有し,プロセスや資源を分離した実行環境を作るので,仮想マシンに比べて起動が速く,オーバーヘッドが小さい。
- エハードウェア上でハイパーバイザが直接動作し,その上で複数の仮想マシンを実行するので,ホスト OS が不要である。
正解と解説を見る
正解 ウ
この問題の基礎知識
- 仮想化方式には,ホスト OS 上で仮想化ソフトウェアを動かすホスト型,ハードウェア上でハイパーバイザが直接動作するハイパーバイザ型,ホスト OS のカーネルを共有して実行環境を分離するコンテナ型がある。
- ホスト型とハイパーバイザ型では仮想マシンごとにゲスト OS が動作するが,コンテナ型ではコンテナごとのゲスト OS をもたない。
- Linux のコンテナは,名前空間(namespace)でプロセスやファイルシステム,ネットワークの見え方を分離し,cgroups で CPU やメモリなどの資源の使用量を制限する。
- コンテナイメージは,アプリケーションと実行に必要なライブラリや設定をまとめたものであり,コンテナエンジンがあれば別のホストでも同じ環境を再現できる。
アアプリケーションとその実行に必要なライブラリなどがイメージにまとめられていないので,別のホストで動かすには同じミドルウェアを事前に導入しておく必要がある。
コンテナイメージにはアプリケーションと依存するライブラリ,設定などがまとめて格納される。コンテナエンジンがあれば,ミドルウェアを個別に導入せずに別のホストでも同じ環境を再現できる。
イコンテナ間で CPU やメモリなどの資源を分割せずに共有するので,コンテナごとに資源の使用量を制限することはできない。
Linux では cgroups などのカーネル機能によって,コンテナごとに CPU 時間やメモリ使用量の上限を設定できる。資源の使用量を制限できないという記述は誤りである。
ウホスト OS のカーネルを共有し,プロセスや資源を分離した実行環境を作るので,仮想マシンに比べて起動が速く,オーバーヘッドが小さい。正解
コンテナは名前空間などのカーネル機能でプロセス,ファイルシステム,ネットワークなどを分離し,cgroups で資源を制限する。ゲスト OS の起動が不要なため,軽量で起動が速い。
エハードウェア上でハイパーバイザが直接動作し,その上で複数の仮想マシンを実行するので,ホスト OS が不要である。
ホスト OS を介さずハードウェア上でハイパーバイザが直接動作するのは,ハイパーバイザ型(ベアメタル型)仮想化の説明である。コンテナ型ではホスト OS 上のコンテナエンジンがコンテナを実行する。
検証用の出典出典照合済み
NIST SP 800-190 Application Container Security Guide照合の根拠(4 件)
- ウ(正解): コンテナはホスト OS のカーネルを共有しつつ分離される
With containers, multiple apps share the same OS kernel instance but are segregated from each other. The OS kernel is part of what is called the host operating system.
NIST SP 800-190 · Section 2.2(新しいタブで開きます) - ウ(正解): VM はゲスト OS 全体を含むのに対しコンテナは含まない(軽量の根拠)。エ(誤り): ハイパーバイザで VM を実行するのはハイパーバイザ型仮想化
VMs use a hypervisor that provides hardware-level isolation of resources across VMs. Each VM sees its own virtual hardware and includes a complete guest OS in addition to the app and its data.
NIST SP 800-190 · Section 2.2(新しいタブで開きます) - ア(誤り): イメージは実行に必要なファイルをまとめ,可搬性がある
Container images— packages containing the files required to run containers—are typically designed to be portable across machines and environments
NIST SP 800-190 · Section 2.1(新しいタブで開きます) - イ(誤り): コンテナごとに資源の使用量を制限できる(Linux では cgroups)
Resource allocation limits how much of a host’s resources a given container can consume.
NIST SP 800-190 · Section 2.2(新しいタブで開きます)
「起動が速い」こと自体の直接の記述はないが,VM がゲスト OS 全体を含むという記述から,ゲスト OS を持たないコンテナが軽量であることを根拠とした。