こんにちは、aiiro(@aiiro29)です。
今回はDockerを使ったことはないけれど、
「どんなことができるか気になっている人」
「これからDockerを使ってみたいと考えている人」
に向けて、Dockerのメリットを解説したいと思います。
Dockerイメージとコンテナについて
Dockerでは、「Dockerイメージ」や「コンテナ」といった言葉が頻繁に使われるため、簡単に触れておきます。
Dockerにはコンテナ型仮想化という技術が使用されています。
DockerはDockerイメージを使用して、コンテナを生成し、生成されたコンテナ上でNginxやPHP等のアプリケーションが動いています。
DockerイメージにはNginxのDockerイメージや、PHPのDockerイメージが存在しています。
1コンテナ1プロセス
Dockerでは1つのコンテナに1つのプロセスという考え方があります。
NginxのコンテナはNginxのプロセスを動かし、PHPのコンテナはPHPのプロセスを動かすといったように、アプリケーション(プロセス)ごとにコンテナを分けて使用します。
コンテナは別々に動かすことになりますが、コンテナ間でネットワークやファイルを共有できるため、複数のコンテナを組み合わせて使用することができます。
Dockerのメリット
開発環境やステージング環境、本番環境で同じコンテナを使える
Dockerがインストールされている環境であれば、コンテナを動かせます。
そのため開発環境で動かしたコンテナを、ステージング環境や本番環境にデプロイすれば、開発環境で動作を確認したコンテナをそのまま動かせるのです。
開発環境を簡単に構築できる
例えばローカルPCにNginxとPHP、MySQLで環境を構築することになったとします。
DockerではDocker HubというDockerイメージを公開しているサービスがあります。
Docker HubからNginx等のDockerイメージをダウンロードして、コンテナを起動すれば開発環境が用意できます。
公式のDockerイメージで不足している機能があれば、自分でDockerイメージを構築して公開することも可能です。
チームメンバーと開発環境を揃えるのが簡単になる
チーム開発をする場合、使用するミドルウェアや言語のバージョンを揃えることは重要です。
バージョンが異なるせいで、あるメンバーの環境で動いていたアプリケーションが、別の環境では動かなくなる恐れがあるからです。
Dockerイメージを共有すれば、同じコンテナを生成できるため、簡単に同じバージョンに揃えられます。
CIでDockerを使用する
CircleCI等でのCIでDockerコンテナを使ってテストを実行できます。
コンテナ内でテストを走らせることで、CIツールの環境に依存しないというメリットを得られます。
まとめ
以上、Dockerメリットについて紹介しました。
Dockerはコンテナを高速で起動できたり、環境を再構築するのが容易だったり、メリットがたくさんあります。
この記事を読んで、Dockerに興味を持ち、使ってみたいと思って頂ければ幸いです。