
4
1 章 コンテナとはなにか、そしてなぜ注目されているのか
•
エンドユーザーや開発者にとって、クラウドへのデプロイをしない場合でも、コンテナに
は利点があります。ユーザーは、設定とインストールの問題に数時間を費やしたり、シス
テムへの変更について気をもんだりすることなく、複雑なアプリケーションをダウンロー
ドして実行できます。一方で、そういったアプリケーションの開発者は、ユーザーの環境
や利用可能な依存対象の差異を心配せずに済むようになります。
さらに重要なのは、
VM
とコンテナでは根本的にゴールが違っていることです。
VM
が目的とし
ているのは、異なる環境を完全にエミュレートすることであるのに対し、コンテナが目的とするの
は、アプリケーションをポータブルにし、単体で動作できるようにすることなのです。
1.1
コンテナと
VM
コンテナと
VM
は、一見似ているように見えますが、重要な違いがいくつかあります。これは、
図で説明するのが一番わかりやすいでしょう。
図
1-1
は、ホスト上でそれぞれ独立の
VM
で動作している
3
つのアプリケーションです。
VM
を作成して動作させるためには、下位層の
OS
やハードウェアへのアクセスを制御し、必要に応
じてシステムコールを解釈してくれるハイパーバイザ
†
が必要になります。それぞれの
VM
には、
OS
、実行するアプリケーション、必要な支援ライブラリの完全なコピーが必要になります。
それに対し、図
1-2
は、同じ
3
つのアプリケーションがコンテナ化されたシステムでも動作す
ることを示しています。