開発環境を構築するのが大変、
開発する人の分だけ、開発環境を構築するのに時間が掛かる。
そんな経験ないでしょうか?
そんな方には、dockerがお勧めです!
dockerって何?
dockerって聞いたことあるけど、
何がいいのか良く分かってない。。。
こういった疑問にお答えします。
Dockerとは
dockerをWikiで調べると、
「コンテナを用いてアプリケーションを開発・配置・実行するためのプラットフォームです。」
との記述があります。
うん、良く分からないですよね。
dockerの構成図を使って説明します。
用語の説明
用語 | 説明 |
コンテナ | 動作させたいアプリケーション(Nginx、SQL、自作アプリ等)が入っています。 |
イメージ | コンテナのアプリケーションを動かす為に必要な、 ファイルシステム(/bin, /etc, ・・・)、アプリケーションを動かす為に必要なコマンド、外部公開用ポート、メモリ領域などで構成されています。 |
Docker Engine | イメージからコンテナ作ったり、コンテナを起動させたり、 イメージ、コンテナを操作します。 |
OS | Windows, MAC, LinuxなどのOSを指します。 |
Dockerfile | イメージを作成する為の設計図。 |
Docker Hub | クラウド上に、アプリケーションのベースとなる、CentOSや、Nginx、Python等のイメージが存在しています。 |
Dockerとは
Dockerの中で一番のポイントは、コンテナと呼ばれるアプリケーションが動作する箱です。
この箱を作る為に、様々なソフトウェアのインストールや設定が必要になるのですが、これらのインストールや設定を簡単にする仕組みがDockerになります。
コンテナは、イメージを使って作ります。
イメージは、すでに存在するDocker Hubからダウンロードしたり、
Dockerfile(イメージ作る為の設計図)から作ることが出来ます。
Docker Hubには、CentOSや、Nginx、Pythonなど、
様々なアプリケーションのイメージが存在しており、自分の作りたいアプリケーションに応じてイメージを選択します。
Dockerfileは、Docker Hub内のイメージをベースにして、
自分なりにカスタマイズしたアプリケーションを作ることが出来ます。
イメージとコンテナの関係は、タイ焼きの金型とタイ焼きに似ています。
イメージが、タイ焼きの金型で、コンテナがおいしいタイ焼きです。
金型があれば、おいしいタイ焼きが誰でも簡単に作れますよね。
Dockerも同じ考えですね。
Dockerを使うメリット
Dockerを使うメリットには、以下があります。
- Dockerfileという設計図(or イメージ)があれば、
誰でも、どのOS(Windows, Mac, Linux)でも、同じ環境が作れる。 - Dockerfileはテキストなので、ファイルサイズが小さく、配布が容易。
- 環境に修正を行っても、環境の再構築がコマンド一つで簡単に出来る。
- コンテナは独立して動作しており、
ある一つのコンテナが動かなくなっても、
他のコンテナには影響を与えない
よって、環境を構築する際に
・インストールすべきソフトが入っていなかった、
・ソフトのバージョンが間違っていた、
・設定が一か所間違っていたりと、
なぜ環境が動かないのか数日悩む日々から開放されます
まとめ
Dockerの概要とメリットについてお伝えしました。
開発環境構築で困っている方は、是非Dockerを使ってみては如何でしょうか。
次回は、基本的なDocker コマンドについてお伝えします。