1.Dockerとは
乱暴に言うと、ソフトウェア単位に仮想化環境で動かすためのアプリケーションです。
Dockerの環境を入れて、Dockerで管理する「コンテナ」という単位でソフトウェアをセットアップしても、他のソフトへの競合もなく、セットアップしたコンテナを他のDockerにコピーして素早く同じ環境を構築できます。
VMWare、Hyper-V、KVMなどと違うところは、これらがマシン単位での仮想化であるのに対し、Dockerはアプリケーション単位での仮想化であるということです。
OSはDockerが稼働しているOSをそのまま利用します(利用には制限がかかっており、コンテナの外の操作はできないようになっています)。
2.Dockerと仮想化環境(マシン単位のもの)との比較
比較として大きなところで下記のものがあります。
項目 | Docker | 仮想化環境 |
---|---|---|
仮想化対象 | OS上のアプリケーションの動作をサンドボックス化する 仮想化された範囲をコンテナとして管理 |
ハードウェアをエミュレーション 仮想化された設定内容やストレージ、メモリを管理 |
実行対象 | アプリケーションソフトとデータ | OS上で動く全て |
メリット | ・仮想化単位はアプリケーションとデータのみなので、容量が小さい ・ほかのコンテナ、OS実環境からは直接アクセスできないため、不正アクセスしづらい、されてもOS本体、他のコンテナにアクセスできない |
OS、アプリケーションがセットアップされた完成された環境になるため、物理ハードやOSバージョン,ハードウェアに左右されない |
制限等 | ・OSのコマンドや環境はDockerを動作させているOSの種類、バージョンが異なると動作しない場合がある。 | OSとアプリケーションのセットのため、容量が大きい。また、仮想環境実行のための設定ファイル等が多い |
その他 | 実行したいアプリケーションのコンテナがインターネットで公開されているため、構築しやすい | 1つのハードウェアで様々なOS、バージョンのアプリケーション環境が動作する |