コンテナ

提供: セキュリティ
2015年1月10日 (土) 13:15時点におけるDaemon (トーク | 投稿記録)による版

移動: 案内検索
スポンサーリンク

コンテナ とは、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名前空間
  • ユーザ名前空間
  • ネットワーク名前空間

仮想化技術に関連のあるもの

関連項目




スポンサーリンク