「コンテナ」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「コンテナ とは、LinuxでいえばLXCDockerといった「プロセス空間を隔離」したOSレベルでの仮想化です。 '''読み方'''...」)
 
行8: 行8:
 
== 概要 ==
 
== 概要 ==
 
== コンテナと仮想マシンの違い ==
 
== コンテナと仮想マシンの違い ==
 +
=== 非仮想化環境 ===
 +
[[コンテナ]]を使わない非仮想化環境を示します。コンテナや仮想マシンを使用しない場合、OSの上で、フラットな空間でプロセスが実行されます。
 +
{|class="wikitable" style="text-align: center;"
 +
|+ 非仮想化環境のスタック
 +
|-
 +
|プロセス
 +
|プロセス
 +
|プロセス
 +
|プロセス
 +
|-
 +
| colspan="6" | OS
 +
|-
 +
| colspan="6" | 物理マシン
 +
|}
 
=== 仮想マシン ===
 
=== 仮想マシン ===
 
仮想マシンでは、以下のようなスタック構造になります。
 
仮想マシンでは、以下のようなスタック構造になります。
HWの上にホストOSがあり、ホストOSの上で仮想マシン(VM)が実行され、VMの上で、ゲストOSが動作し、ゲストOSの上でプロセスが実行されます。VMの上で動作するゲストOSは、ホストOSと異なるものが実行できます。
+
物理マシン(HW, Hardware)の上にホストOSがあり、ホストOSの上で仮想マシン(VM)が実行され、VMの上で、ゲストOSが動作し、ゲストOSの上でプロセスが実行されます。VMの上で動作するゲストOSは、ホストOSと異なるものが実行できます。
 
{|class="wikitable" style="text-align: center;"
 
{|class="wikitable" style="text-align: center;"
 
|+ 仮想マシン(VM)のスタック
 
|+ 仮想マシン(VM)のスタック
行22: 行36:
 
| colspan="2" | ゲストOS
 
| colspan="2" | ゲストOS
 
|-
 
|-
| colspan="2" | vm
+
| colspan="2" | 仮想マシン
| colspan="2" | vm
+
| colspan="2" | 仮想マシン
 
|-
 
|-
| colspan="4" | OS
+
| colspan="4" | ホストOS
 
|-
 
|-
| colspan="4" | HW
+
| colspan="4" | 物理マシン
 
|}
 
|}
  
行54: 行68:
 
| colspan="6" | OS
 
| colspan="6" | OS
 
|-
 
|-
| colspan="6" | HW
+
| colspan="6" | 物理マシン
 
|}
 
|}
 
== コンテナのメリット ==
 
== コンテナのメリット ==
行64: 行78:
 
* それぞれのコンテナから見えるカーネルは、同じカーネルであるため、コンテナから見える・アクセスできるデバイスやカーネルモジュールは、すべて同じになります。
 
* それぞれのコンテナから見えるカーネルは、同じカーネルであるため、コンテナから見える・アクセスできるデバイスやカーネルモジュールは、すべて同じになります。
  
 +
== コンテナで分割されるリソース ==
 +
[[コンテナ]]ごとに分割されるリソースの例を以下に挙げます。
 +
* プロセステーブル
 +
* ファイルシステム
 +
* ネットワーク
 +
* CPU、メモリ、デバイス
 
== コンテナを実現する機能 ==
 
== コンテナを実現する機能 ==
 
* namespace
 
* namespace

2015年1月10日 (土) 02:59時点における版

コンテナ とは、LinuxでいえばLXCDockerといった「プロセス空間を隔離」したOSレベルでの仮想化です。

読み方

コンテナ
こんてな
container
こんてな

概要

コンテナと仮想マシンの違い

非仮想化環境

コンテナを使わない非仮想化環境を示します。コンテナや仮想マシンを使用しない場合、OSの上で、フラットな空間でプロセスが実行されます。

非仮想化環境のスタック
プロセス プロセス プロセス プロセス
OS
物理マシン

仮想マシン

仮想マシンでは、以下のようなスタック構造になります。 物理マシン(HW, Hardware)の上にホストOSがあり、ホストOSの上で仮想マシン(VM)が実行され、VMの上で、ゲストOSが動作し、ゲストOSの上でプロセスが実行されます。VMの上で動作するゲストOSは、ホストOSと異なるものが実行できます。

仮想マシン(VM)のスタック
プロセス プロセス プロセス プロセス
ゲストOS ゲストOS
仮想マシン 仮想マシン
ホストOS
物理マシン

コンテナ

コンテナのプロセスは、ホストOSのプロセスとして実行されます。コンテナに属するプロセスは、通常のプロセス空間とは異なる隔離された空間内で実行されます。隔離空間をコンテナと呼びます。

コンテナのスタック
隔離空間
プロセス プロセス
隔離空間
プロセス プロセス
プロセス プロセス
OS
物理マシン

コンテナのメリット

  • 起動が軽いです
  • オーバーヘッドが少ないてすみます
  • 必要なプロセスだけ起動すれば良いです(ゲストOSは不要)

コンテナのデメリット

  • OSが実行できるプロセスしか実行できません。
  • それぞれのコンテナから見えるカーネルは、同じカーネルであるため、コンテナから見える・アクセスできるデバイスやカーネルモジュールは、すべて同じになります。

コンテナで分割されるリソース

コンテナごとに分割されるリソースの例を以下に挙げます。

  • プロセステーブル
  • ファイルシステム
  • ネットワーク
  • CPU、メモリ、デバイス

コンテナを実現する機能

  • namespace
  • cgroups

namespace

namespace(名前空間) は、プロセスをグループ化し、隔離されたコンテナの空間を作る機能です。 namespace には、以下の種類があります。

  • マウント名前空間
  • UTS名前空間
  • PID名前空間
  • IPC名前空間
  • ユーザ名前空間
  • ネットワーク名前空間

関連項目