Dockerのメリット
Dockerのメリットは、開発環境を簡単に共有することができることです。
複数人で開発を行うときでもDockerfileなどのファイルを共有するだけで、すぐに共通の環境を構築することができます。(仮想環境の構築手順をファイルで管理することができるため、誰が実行しても同じ結果が得られる。)
個々のコンピュータに直接ソフトウェアをインストールすることもなく、必要なときに必要な分だけコンテナを立てて開発環境を構築できます。
コンテナとは
Simply put, a container is another process on your machine that has been isolated from all other processes on the host machine. That isolation leverages kernel namespaces and cgroups, features that have been in Linux for a long time. Docker has worked to make these capabilities approachable and easy to use.
コンテナは、「OS上で実行されている隔離されたプロセス」です。
プロセスとは実行されているプログラムのことです。
(仮想マシンではなく、特殊なプロセス。ゲストOSを使用することもなく、コンテナはホストのOSを使用する。)
Dockerのメリットとして「開発環境を簡単に共有できる」と書きましたが、コンテナはプロセスなので、imageを共有することでプロセスを共有できることになります。つまり、コマンド1つで完成したアプリケーションを個々のPC上で実行できることになります。(プログラムを開発する場合は、コードを共有してDockerfile等からコンテナを立ち上げた上でコードを編集していくことになる。しかし、アプリケーションの共有だけできればいいのであればimageをpullしてくるだけで可能であり、これはコマンド1つで実現できる。)
コンテナ作成に必要な作業をソフトウェア(コマンドラインツール)としてまとめてくれたのが
Dockerです。
原則として1つのコンテナで1つのソフトウェアが動くようにします。
1つ1つコンテナを立てるのは手間なため、多くの場合docker-compose
を使って一気に複数のコンテナを立てて環境構築します。
まとめ
Dockerのメリットは、開発環境を簡単に共有できることです。
自分のコンピュータにあれこれ直接ソフトウェアをインストールする必要もないので、自分のPC環境が綺麗な状態で色々なコンテナを立てて試すこともできます。
コンテナは、隔離されたプロセスです。
コンテナを作成するためのソフトウェア(コマンドラインツール)がDockerです。