アーキテクチャ

コンテナとは?Dockerとは?

目次

・コンテナとは
・コンテナのメリット
・dockerとは

コンテナとは

コンテナとは、貿易に使用される船のコンテナが語源だと思われる。
船のコンテナのおかげで様々な商品を運搬が可能になっているが、システム上のコンテナも同様の考え。
1つのコンテナ内に、サーバーやDB、アプリなどを構築でき、そのコンテナをいくつも構築できる。
また、積み下ろしも楽に行え、必要なコンテナをすぐに構築でき、不要なコンテナは簡単に削除できる。

コンテナのメリット

コンテナのメリットを説明する上で、仮想サーバーや従来の構成との違いを交えて説明したい

従来の構成図

従来は、CPUやメモリ、HDD/SSDといったHardwareを基盤として、windowsやmacといったhost operetion systemで構成されており(仮想サーバーもコンテナも同じだが)、その上にアプリケーションを構築している。
一つのハードウェアの中に、一つのOSがあり、複数のアプリケーションをインストールして実行している。
この場合、リソースに無駄があり、コストが高くなる。また、windowsの場合、macでしか使用できないアプリなどが使用できないといったデメリットが挙げられる。

仮想サーバー


仮想サーバーは、VMwareやGoogle Compute Engine,Virtual BoxなどといったHypervisor(仮想マシン)を介して、OSを実行する。
従来とくらべて、OSへの選択が自由で、仮想端末毎に特定の作業に特化した端末をセットアップできる。
一方で、その仮想端末を動かす際は、OSごと動かす必要があるため、コンテナに比べると動作は重い。

コンテナ


コンテナは、仮想サーバーとは違い、仮想マシンを介した実行を行わず、DockerやContainerといったContainer Engineを介して実行される。
OSを動かす必要がないため、仮想サーバーと比べて動作が速く、OSの管理が不要。
また、仮想サーバーと同様、そのコンテナ内で特定の作業に特化したアプリを構築できる。
一方で、コンテナに対応していないアプリ(Votiro)等は使用できない。

・仮想サーバーと違ってリソースを無駄なく使用できるため、パフォーマンスが良い。
・特定の作業に特化したアプリで構築できる。
・管理費が少ない。

Dockerとは?

Dockertとは、上記でも触れた通り、各コンテナの作成、配布、実行するContainer Engineのこと。Docker社が開発している。
Container EngineはDockerの他にもContainerdが存在する。