目次
Dockerとは
仮想環境の構築、実行、共有が簡単に行うことができるプラットフォームのことです。
Dockerの特徴としてはコンテナ化という方法を用いて環境の構築を行うことです。
Dockerのアイコンに関してもこのコンテナがイメージされたものになっています。
コンテナとはホストOS上に作成される使い捨て可能な仮想環境のことで、
- 軽量であること
- 環境の共有が可能であること
- Dockerfileという構築内容を記載するファイルにどんな仮想環境を作るかを書くことで複雑な環境の構築も可能であること
などのメリットがあります。
Dockerのホームページ: https://www.docker.com/
軽量であることのメリット
軽量であるので環境の素早い構築や起動、停止を実現することができます。
新しく再度環境を構築する際もすぐに作成することができるので環境の構築に余計な時間を割かなくてすみます。
また、軽量であるのでホストPCの容量をそんなに割かなくても済むこともメリットです。
環境の共有が可能であることのメリット
すでにいろんな環境が公開されているので、例えばRailsを使用したいとかがある場合にRailsをインストールした環境がすでに公開されていたりするので、それを利用することですぐにRailsを使用することができます。
最近ではプログラミングの参考書でも環境構築に手間取らない様にDockerを使用するものも出てきました。
また、環境の共有が可能になったことで開発環境と本番環境で全く同じ環境を使用することができます。
例えばAWSではECSというコンテナをデプロイするサービスがあり、それを使用することで本番環境と開発環境で同じものを使用することができ、本番環境と開発環境の違いによるエラーが起こることを避けることができます。
また開発環境の共有が簡単にできるので、新しく開発メンバーが増えた場合や、環境に新しくプラグインをインストールしなければいけない場合などに、問題なく動く環境をメンバーみんなに共有することができ、環境構築でつまづくことが無くなるメリットもあります。
複雑な環境の構築も可能であることのメリット
実際にアプリケーションを動かす環境には事前に入れておかなければいけないソフトウェアなどがあったりします。
そういったものも環境構築の内容を記載するDockerfileに記載することで実現でき複雑な環境の構築も可能になっています。
そのため柔軟性があり、いろんな場面で使用することが可能になっています。
実務での使用用途
実務でのWebアプリケーション開発におけるDockerの使用用途としては主に下記の3つになります。
- 開発環境において、開発メンバーの環境の統一
- 開発環境と本番環境の統一
- テスト環境の構築
「開発環境において、開発メンバーの環境の統一」ではみんなが同じ環境を使用することでバグが再現しないみたいな状況を避けることができます。
「開発環境と本番環境の統一」では開発環境ではうまくいったが本番環境ではうまく行かないみたいな状況を避けることができます。
テスト環境の構築に関しては、CI/CDを行う環境にDockerを使用することがあります。
CI/CDに関しては別途記事を書きますのでそちらをご参照ください。
DockerComposeを使用して複数のコンテナを合わせて使用する
DockerComposeを使用することで複数のコンテナを起動させ、それらを合わせて使用することが可能になります。
例えば、Ruby on Railsを動かすコンテナとメールの送信を行うコンテナ、そしてwebpackerを動かすコンテナなどを同時に起動させ、それらを合わせて使用する様なことが可能になります。
このDockerComposeによってより複雑な環境を構築することが可能になります。
おすすめの資料
dockerのドキュメントは英語で少し読みづらいですが、現在はdockerの日本語のドキュメントを作成している方々がいる様で、日本語に翻訳されたドキュメントが公開されています。
とても参考になるのでDockerを使用するのであれば見ることをおすすめします。