コンテナ

提供: セキュリティ
2015年1月10日 (土) 14:18時点における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は不要)

完全仮想化に比べてファイルアクセスが高速

完全仮想化では、ディスクI/Oの遅さが問題になりやすいです。 また、ディスクイメージのファイル操作が面倒という課題もあります。

完全仮想化でのI/Oは、以下のような階層になります。

完全仮想化でのファイルシステムとプロセス
プロセス
ファイルシステム

仮想マシン

プロセス
ファイルシステム

仮想マシン

ディスクイメージ ディスクイメージ
ファイルシステム
ディスク

仮想化環境のプロセスがファイルI/Oを行う場合、仮想化環境のファイルシステムにアクセスするとディスクイメージにアクセスがいきますが、ディスクイメージを読むためには、ゲストOSのファイルシステムにアクセスをし、ディスクへいきます。非仮想環境のプロセスに比べて、仮想環境とファイルシステムとディスクイメージへのアクセスのオーバーヘッドが多くなります。

コンテナでは、仮想マシンとは異なる、直接、限定されたファイルシステムへアクセスできるため、ファイルI/Oが高速ということになります。

  • ディスクのエミュレーションが不要
  • ファイルシステムが二重にならない
コンテナでのファイルシステムとプロセス
コンテナ
プロセス プロセス
コンテナ
プロセス プロセス
プロセス プロセス
ファイルシステム
ディスク

コンテナのデメリット

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

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

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

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

コンテナを実現する機能

namespace

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

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

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

関連項目




スポンサーリンク