Dockerについてあまり理解していなかったので、
自分なりに簡単にまとめていきたいと思います。
今回はWebアプリ構築することを前提に書いていきます。
Dockerとは
仮想環境を構築するためのツールです。
"コンテナ"と呼ばれる仮想環境を構築し、
そのコンテナを組み合わせて動かすことでWebアプリを動かすことができます。
コンテナとは
設定ファイルなどをひとまとめにしたもの。
例えば、
アプリ(laravel、Railsなど)、ミドルウエア(MySQL,Nginxなど) 、OS(CentOS,Ubuntuなど)など様々なコンテナを作ることができます。
イメージ
Dockerコンテナを作るためのためのレシピみたいなものです。
ベースイメージ
Docker Hubなどで提供されているベースになるイメージです。
レイヤ
レイヤを重ねることでイメージを自分好みにカスタムできます。
Dockerと仮想化ソフト(VirtualBox)の違いは?
仮想化ソフト(VirtualBox)
■メリット
・細かな設定ができる。
■デメリット
・ゲストOSを起動しなければならない。Dockerに比べてCPU、メモリを消費する。
Docker
■メリット
・イメージがあれば簡単に環境構築ができる。
・「作って壊す」がすぐでき、必ず同じ環境が作れる。
■デメリット
・同一のOSから複数のコンテナを作成するため、違うOSを使いたい場合は別のマシン必要。
家を例にして比較(DockerとVirtualBox)
①土地(ホストOS)
家を立てるのに土地が必要。
②家の外装(VirtualBox、Docker Engine)
家の骨組み、外観を決める。
③家の内装(Vagrant、Docker)
Vagrant:内観の設計、部屋を何するかを決める
→細かく決めるが設計など時間がかかる。
Docker:部屋を何するかを決める
→部屋をすぐに変更できるが家の細かなカスタムは不向き。