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

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

エソラ
エソラ

どうも、当ブログ(とあるエンジニアのエソラゴト)を運営している、エンジニアのエソラ(@ya6madev)です。
普段はSIer企業でDXとかAI開発をしながら、自社サービスの開発をしています。

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

エンくん
エンくん

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

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

この記事を読めば、Dockerについて怖がらずに話せるようになります。

エソラ
エソラ

是非ともこの機会にDockerの概要なぜDockerを使うことで得られるメリットだけでも覚えて帰って下さい!

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

エソラ
エソラ

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

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

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

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

エソラ
エソラ

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

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

エソラ
エソラ

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

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

わざわざ、手順書を用意するのもめんどくさいです。

エソラ
エソラ

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

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

Dockerが誕生する前までは。

Dockerが便利な理由

チェックポイント

Dockerの最大の便利さは上記のような「バージョン差異や環境差異をなくして、手軽に環境構築が出来るようになった」という点です。

エソラ
エソラ

地味に感じるかも知れませんが、これは凄いことです。

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

エソラ
エソラ

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

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

docker-use-image

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

チェックポイント

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

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

Dockerについて知るためには、コンテナ技術について知ることが重要です。

以下からは、コンテナについて話します。

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

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

エソラ
エソラ

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

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

Docker_EcoSystem

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

チェックポイント

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

コンテナ技術とは何か?

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

エンくん
エンくん

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

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

エソラ
エソラ

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

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

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

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

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

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

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

コンテナはバラバラの物資をまとめて、船で運ぶために使われます。

また形が四角いので、いっぱい積むことが出来ます。

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

エソラ
エソラ

コンテナとはプログラム実行環境が入った箱なのです。

例えば、あるコンテナにはバックエンドで使うRubyの実行環境が入っていて、あるコンテナにはフロントエンドで使うReactの実行環境が入っていて、あるコンテナにはDBであるMySQLが入っている。

エソラ
エソラ

そして、「実は船がOSの役割を担っているので、それぞれのコンテナを直接操作することが出来る」のです。

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

Docker公式ロゴマーク

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

チェックポイント

Dockerは実行環境をまるごとコンテナという箱に入れて、持ち出すための技術なのです。

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

エソラ
エソラ

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

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

エソラ
エソラ

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

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

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

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

結論

エソラ
エソラ

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

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

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

ここまで記事を読んで、Dockerを使いたくなってきたでしょうか?

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

ここまでお読み頂き、ありがとうございました。
もし、「面白かった」、「参考になった」という方がいましたら、以下のソーシャルボタンからシェア頂けると泣いて喜びます!!
エソラ
エソラ
またブログランキングにも参加しています。 よろしければ、ポチッとお願いしまーす!
それでは、良いエンジニアライフをお過ごし下さい!

以下は参考書籍です!

最新情報をチェックしよう!