「コンテナ」の版間の差分
提供: セキュリティ
(相違点なし)
|
2015年1月9日 (金) 21:11時点における版
コンテナ とは、LinuxでいえばLXCやDockerといった「プロセス空間を隔離」したOSレベルでの仮想化です。
読み方
- コンテナ
- こんてな
- container
- こんてな
目次
概要
コンテナと仮想マシンの違い
仮想マシン
仮想マシンでは、以下のようなスタック構造になります。 HWの上にホストOSがあり、ホストOSの上で仮想マシン(VM)が実行され、VMの上で、ゲストOSが動作し、ゲストOSの上でプロセスが実行されます。VMの上で動作するゲストOSは、ホストOSと異なるものが実行できます。
プロセス | プロセス | プロセス | プロセス |
ゲストOS | ゲストOS | ||
vm | vm | ||
OS | |||
HW |
コンテナ
コンテナのプロセスは、ホストOSのプロセスとして実行されます。コンテナに属するプロセスは、通常のプロセス空間とは異なる隔離された空間内で実行されます。隔離空間をコンテナと呼びます。
隔離空間
|
隔離空間
|
プロセス | プロセス | ||||
OS | |||||||
HW |
コンテナのメリット
- 起動が軽いです
- オーバーヘッドが少ないてすみます
- 必要なプロセスだけ起動すれば良いです(ゲストOSは不要)
コンテナのデメリット
- OSが実行できるプロセスしか実行できません。
- それぞれのコンテナから見えるカーネルは、同じカーネルであるため、コンテナから見える・アクセスできるデバイスやカーネルモジュールは、すべて同じになります。
コンテナを実現する機能
- namespace
- cgroups
namespace
namespace(名前空間) は、プロセスをグループ化し、隔離されたコンテナの空間を作る機能です。 namespace には、以下の種類があります。
- マウント名前空間
- UTS名前空間
- PID名前空間
- IPC名前空間
- ユーザ名前空間
- ネットワーク名前空間