アクセスありがとうございます!次は「とあるエンジニアのエソラゴト」で検索して頂けると嬉しいです!

【初心者】なぜDockerを使うべきなのか、説明出来るようになるくらい丁寧に語りたい

はじめに

読者
Dockerっていう言葉を最近よく聞くけど、よく分からない
読者
Dockerって何が便利なの?

今回は、そんな疑問に答えます!

Dockerをまともに使えないエンジニアはかなり遅れているという旨の記事が出ているくらい、今や絶対に習得しておきたいスキルの一つとなっています。

是非ともこの機会にDockerの概要となぜDockerを使うのかというメリットだけでも抑えて帰って下さい!
  • Dockerについてよく分からないエンジニア
  • Dockerの何が便利なのか分からないエンジニア
  • Dockerをポートフォリオに組み込みたい転職希望者

開発環境を構築することは非常にハードルが高い

Dockerについて語る前に、エンジニアのみなさんに質問です。

自分のPCに開発環境を準備しようとした時に、以下のような経験はないでしょうか?

  1. インストールしようとインストーラーを実行したら、エラーが出た。
  2. 苦労しながらエラーメッセージを見て、何とか解決。
  3. その後、インストーラーを再実行したら、今度は違うエラーが出た。
  4. うんざりして辞めてしまう

エンジニアであれば、あるあるの話だと思います。

環境構築は言わばスタートラインに立つための作業ですが、実はハードルが高い作業です。

バージョンの違いとか、自分のPCにインストールされているプログラムとの依存関係とか、そもそも手順を間違えたとか、様々な要素でエラーが発生してしまい、スタートラインにも立てずに、諦めてしまう初心者が多いです。

また、「初心者に開発環境の構築を指示する人」にとっても、悩みがあります。

開発メンバーのみんなに環境構築をお願いしたら、それぞれ違うエラーを持ってきて、一個一個解決するのにはとても労力がいります。

読者
あー、何か良い仕組みがないものかなぁ?

こんなことを思いながら、エラーを一つずつ潰して、環境構築を行っていました。

Dockerが誕生する前までは。

Dockerが便利な理由

Dockerの最大の便利さは上記のような「バージョン差異や環境差異をなくして、手軽に環境構築が出来るようになった」という点です。
地味に感じるかも知れませんが、これは凄いことです。

「Docker for Windows/Mac」をインストールして、「Dockerfile」と呼ばれるファイルに「プログラムが動くための依存関係や設定」を書き、コマンドをいくつか叩くことで、環境構築が出来るのです。

ということは、Dockerfileを一度作ってしまえば、それをチームメンバーに渡して、「このコマンド叩いといて」と言えば、すぐに開発環境が出来るのです。

図にすると以下のような感じです。

docker-use-image

Dockerfileが設計書となるので、わざわざインストール手順書を作成する手間も省けます。

初心者の方は、Githubとか、会社の先輩とかから取得したDockerfileを利用して、コマンドを打つことで、同じ環境がすぐに出来上がるのです。

Dockerの概要 〜コンテナとは何か?〜

Dockerとはエコシステムの総称である

Dockerの便利さが何となく分かったところで、もう少し技術的な概要について説明させてもらいます!

Dockerとは、「コンテナを作ったり、動かしたりするためのエコシステムの総称」です。

具体的には以下の図のような感じです。

Docker_EcoSystem

エコシステムとは、日本語で直訳すると「生態系」という意味となります。

要するに、「Dockerは色々な技術を組み合わせて、それぞれが繋がり合って、コンテナを作ったり、動かしたりが可能になる大きなシステムのことである」ということです。

コンテナ技術とは何か?

読者
コンテナというよく分からない単語が出てきた!

ここからはコンテナ技術について、解説をさせていただきます。

Dockerはコンテナ技術を使っているので、理解が必要です。

まず、身近にあるもので考えてみましょう!

意外と身近なものに例えて技術用語を覚えることで、頭に入るものです。

【初心者】なぜDockerを使うべきなのか、説明出来るようになるくらい丁寧に語りたい
コンテナ

上記の写真に写っているもの、何かお分かりでしょうか?

そう、輸入された物資を船で運ぶために使う「コンテナ」です。

このコンテナには何が入っているのでしょうか?

あるコンテナにはバナナが入っていたり、あるコンテナには小麦が入っていたり、またあるコンテナにはチョコレートが入っているかも知れません。

コンテナはバラバラの物資をまとめて、船で運ぶために使われます。また形が四角いので、いっぱい積むことが出来ます。

ここでいうコンテナ技術も、上記の貨物で使うコンテナも役割としては同じです。

コンテナとはプログラム実行環境が入った箱なのです。
例えば、あるコンテナにはバックエンドで使うRubyの実行環境が入っていて、あるコンテナにはフロントエンドで使うReactの実行環境が入っていて、あるコンテナにはDBであるMySQLが入っている。
そして、「実は船がOSの役割を担っているので、それぞれのコンテナを直接操作することが出来る」のです。

ここまでの話を踏まえて、Dockerの公式ロゴを見てみると、以下のようになっています。

Docker公式ロゴマーク

クジラがコンテナを運んでいるロゴになっています。

コンテナはどうやって作るのか?

次は、「コンテナはどうやって作って、動かすのか」という話です。

上記では、Dockerfileを他のエンジニアに渡すと、開発環境が出来ていました。

そう、コンテナを作るためにはDockerfileが必要なのです。

具体的には以下のようになります。

  1. Dockerfilemにイメージと呼ばれるコンテナの発注書のようなものを書いて、イメージをビルドする。
  2. イメージを元にコンテナが出来上がり、それを実行することでコンテナが起動する。

図にすると、以下のような感じになります。

結論

今回は「Dockerはとは何か、またなぜDockerを使うべきなのか」というテーマで書かせて頂きました。

まとめると、以下のような感じです。

  1. Dockerを使うことで、環境構築が凄く楽になる。
  2. Dockerの技術コアはコンテナ技術である。
  3. コンテナとはプログラムの実行環境が入った箱である。
  4. Dockerfileからイメージをビルドして、コンテナを起動することで使えるようになる。
Docker使いたくなってきましたでしょうか?

今回は「Dockerとは何かについて、またDockerを使う理由」を中心に述べました。

少しでもDockerについて、理解して頂き、興味を持って頂けたら幸いです。

また続編として、Dockerfileの使い方についたまとめ記事もありますので、ことらもどうぞ!

とあるエンジニアのエソラゴト

Dockerの最大の利点は、「環境構築の手軽さ」でした。以下の図のように、事前に作成したDockerfileを他のエンジ…

それでは、良いエンジニアライフをお過ごし下さい!

ここまでお読み頂き、ありがとうございました。

「面白かった、ためになった」という方がいたら、SNSでシェアして頂けると非常に嬉しいです!
最新情報をチェックしよう!