プログラマーになると必ず覚える必要が出てくるとっても便利なツール、それがDockerです。
この記事では、Dockerについてどのサイトよりもわかりやすい言葉で、誰でも理解ができるように説明していきます。
Dockerとは
Dockerとは仮想環境を簡単に構築できるツールです。
仮想環境とはわかりやすくいうと、自分のパソコンの中にもう一つ仮想的なコンピューターを準備して、そこにOSをインストールしたりアプリケーションをインストールしたりできる環境のことです。
OSというのは、コンピューターを内部から動かすシステムのことです。今iphoneを使っているならios、windowsのパソコンを使っているなら、windowsというOSを使っていることになります。他にも有名どころでいうとmacOSやAndroidがあります。また、プログラマーならLinuxというOSで開発を進めることが多いです。
なぜ仮想環境を構築する必要があるのか
仮想環境を使えば、自分のパソコン上で違うOSを動かすことができます。例えばあなたがwindowsのパソコンを使っているとします。でも、開発はLinuxのOSで行いたいとします。
そんな時に役に立つが仮想環境です。仮想環境を構築すればその環境の中にLinuxをインストールできるのでwindowsのパソコンを使いながらLinuxのOSでの開発ができます。「windowsで開発したらいいやん」と思うかもしれませんが、そうはいきません。理由はここでは割愛しますが、Linuxで開発する場面は非常に多いです。
windowsやmacを使いながらLinuxOSで開発を進めるために仮想環境を構築することが必要になります。そして、その仮想環境を簡単に構築できるのがDockerということになります。
Docker用語集
Dockerを使ううえで、覚えておいた方が良い用語が3つあります。
Dockerコンテナ | 一般的に「コンテナ」と呼びます。Dockerの中で動いている仮想環境のことです。コンテナの中が、仮想環境です。 |
---|---|
Dockerイメージ | 一般的に「イメージ」と呼びます。コンテナを作るレシピみたいなものです。イメージからコンテナが作られます。 |
Dockerレジストリ | イメージを管理する場所のことです。公式のDocker hubというサービスもその一つで、様々なイメージが共有されています。 |
Dockerレジストリからイメージを取ってきて、そのイメージからコンテナ(仮想環境)を作るというのが最初の流れになります。
Dockerを使うメリット
他にも仮想環境を作る方法はあります。ではなぜ、現在Dockerが流行っているのでしょうか。
Dockerを使うメリットは次の2点です。
- 軽いくて起動が早い
- 環境の再現性が高い
起動が早い
他の方法で仮想環境を作る場合はOSレベルから立ち上げていくため、起動に時間がかかります。それに比べてDockerでは、少し違う仮想環境の構築方法を取っているため、起動がかなり早いです。(具体的な理由はここでは割愛します。)
また他の仮想環境構築方法に比べてコンテナは非常に軽いです。そのためパソコンのメモリもそこまで多くは消費しません。メモリが少ないパソコンを使っているプログラマーにとっては大助かりです。
開発をしていく上で仮想環境がすぐに立ち上がるというのは大きなメリットとなります。
同じ環境を違うパソコンでも簡単に再現できる
開発は基本的に一人で行うものではありません。複数人で一つのシステムを作っていくことが多いです。
そのときに、AさんとBさんがそれぞれ違う環境で開発を行っていてはどうなるでしょうか。Aさんの環境では動いたのに、Bさんの環境では動かない、といったことが起こる可能性があります。それでは開発が効率よく進みませんよね。
Dockerを使って環境を構築するとき、イメージからコンテナを作成します。そのため同じイメージを使えば基本的は同じ環境が構築されます。イメージからコンテナを作成した後の手順も「Dockerfile」と呼ばれる手順書にコードを記述することで、誰でも同じ環境を簡単に再現することができるのです。
ちなみに自分が作ったコンテナからイメージを作ることもできるので、環境を作ってイメージにして配布、ということが簡単にできます。
Dockerの学び方
実際にDockerを学ぶなら、Dockerをインストールして書いて環境を構築してみたほうが早いです。一回だけではなんとなくしかわかりません。何度も何度も構築して、Dockerについて掴んでいきましょう。
Qiitaの記事を参考に実際にDockerで環境を作ってみる
QiitaにはDockerを使って環境を掴む方法が満ち溢れています。JavascriptからRuby、PHPまで、基本的にすべての言語についてDockerを使った環境構築がQiitaで記事にされていると思います。
- Rubyの環境を作るだけ
- Rubyとmysqlが入った環境を作る
- Ruby環境とmysql環境のコンテナを作って連動させる
など、様々なDockerを使った環境構築の記事が上がっています。興味のある言語の環境を実際に手を動かして作ってDockerを使いこなせるようになりましょう。
Python環境のコンテナとmysql環境のコンテナを連動させる環境構築の記事を現在僕が作成中です!お楽しみに!
書籍を買ってDockerの理解を深める
多くの記事は、基本的にDockerをつかって環境を作るだけにとどまっています。Dockerを深く説明すると記事の内容が膨れ上がってしまうので仕方ありません。
この記事のDockerの説明も、かなり噛み砕いて初心者にわかりやすいように説明しています。なぜDockerのコンテナが軽量で作れるのか、コンテナのもっと奥の深いメリットなどは省略しています。
ある程度Dockerに慣れてきて更に理解を深めたいなら、次は書籍を買うことをおすすめします。Dockerについて本格的に書かれているので、Dockerに対する理解が一気に深まると思います。
ただし最初から書籍を買うことはあまりおすすめしません。まずは手を動かしてDockerを使ってみることがDockerの理解を深める一番の近道だからです。Dockerを使って色々な環境を5つくらい作ってみたら、書籍を買って理解を深めるという流れが良いと思います。
記事は以上です。