環境構築

Dockerを使う際に気にしたいコンテナと仮想マシンの違い

コンテナと仮想マシンの違いは「カーネルを共有しているかどうか」これに尽きます。

これだけだと分かりづらいので、仮想マシンとコンテナの動きについて見ていきます。

仮想マシンとコンテナの動き

仮想マシンはハードウェアの上にホストOS(Windows, MacOS etc)を乗っけて、更に仮想化ソフトを乗っけていきます。
そして、そこに仮想マシンを入れるという流れになります。
この時、ホストOSとゲストOSをカーネルと呼び、OSのコアになる機能がインストールされます。これは起動に時間がかかるというデメリットがあります。

コンテナは、ハードウェアの上にホストOS(Windows, MacOS etc)を乗っけて、更にコンテナ管理ソフトを乗っけていきます。
ここまでは、仮想マシンと似ています。
この次から異なってきていて、コンテナ管理ソフト上で動くコンテナのOSはホストOSと共有する形で動きます。
そのため、起動が速いというメリットがあります。

DockerイメージとDockerコンテナの違い

Dockerイメージは、「実行環境を定義したもの」「Docker Hubなどのリポジトリに保管」するものになります。
一方でDockerコンテナはDockerイメージを実行してできる実行環境になります。

プログラムで例えると、クラスがDockerイメージでインスタンス化したものがDockerコンテナというイメージになります。