Docker以前に、コンテナってそもそも何
Dockerとは
Dockerとは、コンテナ技術を利用してアプリケーションを効率よく管理・実行するためのツールです。このコンテナ技術は仮想化技術の一種です。
仮想化とは
仮想化とは、実際には存在しないものを、まるで実在しているかのように表現する技術のことです。例えば、クラウドコンピューティングでは、実際の物理サーバーの数に関係なく、あたかも複数のサーバーが存在しているかのように見せることができます。この技術を使うことで、サーバーのリソースを効率よく配分できます。例えば、物理サーバーが一台しかない場合でも、そのサーバーのメモリやCPUを無駄なく使用することが可能です。
仮想化のタイプ
仮想化にはいくつかのタイプがあり、それぞれの特徴と使い方があります。
ホストOS型
ホストOS型仮想化では、まず物理サーバーに一つのOS(オペレーティングシステム)をインストールします。その上に仮想化ソフトウェアをインストールし、さらにその上に仮想サーバーを作成します。この仮想サーバーにはゲストOSと呼ばれる別のOSをインストールします。つまり、一つの物理サーバーにOSが二重に存在する状態です。例えば、VirtualBoxというソフトウェアを使えば、MacやWindowsの中でLinuxを立ち上げることができます。
ハイパーバイザー型
ハイパーバイザー型仮想化では、ホストOSをインストールする必要がありません。直接物理サーバーの上にハイパーバイザーというソフトウェアをインストールし、その上にゲストOSを作成します。例えば、AmazonのEC2(Elastic Compute Cloud)はこのハイパーバイザー型を採用しています。
コンテナ型
コンテナ型仮想化では、仮想サーバーを作成する代わりにコンテナを作成します。コンテナ内にはゲストOSをインストールする必要がありません。ホストOSが存在するだけで、コンテナはその上で動作します。Dockerはこのコンテナ型仮想化の代表的なツールです。
コンテナ型のメリット
コンテナ型仮想化の大きなメリットは、アプリケーション単位で仮想環境を作成できることです。これにより、異なるアプリケーションを簡単に管理・実行でき、全体のシステムが軽くなります。なぜなら、OS自体を仮想化するわけではなく、必要な部分だけを仮想化するためです。
コンテナ型のデメリット
コンテナ型仮想化のデメリットとしては、ホストOSのOS部分を共通で利用するため、OSに依存する点があります。ホストOS型では各仮想マシンが独立したOSを持っているため、他の仮想マシンに影響を与えることなく動作させることができますが、コンテナ型ではホストOSを共有するため、その点を考慮する必要があります。
Discussion