はじめに
今回は、そんな疑問に答えます!
Dockerをまともに使えないエンジニアはかなり遅れているという旨の記事が出ているくらい、今や絶対に習得しておきたいスキルの一つとなっています。
- Dockerについてよく分からないエンジニア
- Dockerの何が便利なのか分からないエンジニア
- Dockerをポートフォリオに組み込みたい転職希望者
開発環境を構築することは非常にハードルが高い
自分のPCに開発環境を準備しようとした時に、以下のような経験はないでしょうか?
- インストールしようとインストーラーを実行したら、エラーが出た。
- 苦労しながらエラーメッセージを見て、何とか解決。
- その後、インストーラーを再実行したら、今度は違うエラーが出た。
- うんざりして辞めてしまう
エンジニアであれば、あるあるの話だと思います。
バージョンの違いとか、自分のPCにインストールされているプログラムとの依存関係とか、そもそも手順を間違えたとか、様々な要素でエラーが発生してしまい、スタートラインにも立てずに、諦めてしまう初心者が多いです。
開発メンバーのみんなに環境構築をお願いしたら、それぞれ違うエラーを持ってきて、一個一個解決するのにはとても労力がいります。
こんなことを思いながら、エラーを一つずつ潰して、環境構築を行っていました。
Dockerが誕生する前までは。
Dockerが便利な理由
「Docker for Windows/Mac」をインストールして、「Dockerfile」と呼ばれるファイルに「プログラムが動くための依存関係や設定」を書き、コマンドをいくつか叩くことで、環境構築が出来るのです。
図にすると以下のような感じです。

Dockerfileが設計書となるので、わざわざインストール手順書を作成する手間も省けます。
Dockerの概要 〜コンテナとは何か?〜
Dockerとはエコシステムの総称である
Dockerの便利さが何となく分かったところで、もう少し技術的な概要について説明させてもらいます!
具体的には以下の図のような感じです。

エコシステムとは、日本語で直訳すると「生態系」という意味となります。
コンテナ技術とは何か?
ここからはコンテナ技術について、解説をさせていただきます。
Dockerはコンテナ技術を使っているので、理解が必要です。
意外と身近なものに例えて技術用語を覚えることで、頭に入るものです。

上記の写真に写っているもの、何かお分かりでしょうか?
そう、輸入された物資を船で運ぶために使う「コンテナ」です。
このコンテナには何が入っているのでしょうか?
あるコンテナにはバナナが入っていたり、あるコンテナには小麦が入っていたり、またあるコンテナにはチョコレートが入っているかも知れません。
コンテナはバラバラの物資をまとめて、船で運ぶために使われます。また形が四角いので、いっぱい積むことが出来ます。
ここでいうコンテナ技術も、上記の貨物で使うコンテナも役割としては同じです。
ここまでの話を踏まえて、Dockerの公式ロゴを見てみると、以下のようになっています。

クジラがコンテナを運んでいるロゴになっています。
コンテナはどうやって作るのか?
上記では、Dockerfileを他のエンジニアに渡すと、開発環境が出来ていました。

具体的には以下のようになります。
- Dockerfilemにイメージと呼ばれるコンテナの発注書のようなものを書いて、イメージをビルドする。
- イメージを元にコンテナが出来上がり、それを実行することでコンテナが起動する。
図にすると、以下のような感じになります。

結論
まとめると、以下のような感じです。
- Dockerを使うことで、環境構築が凄く楽になる。
- Dockerの技術コアはコンテナ技術である。
- コンテナとはプログラムの実行環境が入った箱である。
- Dockerfileからイメージをビルドして、コンテナを起動することで使えるようになる。
今回は「Dockerとは何かについて、またDockerを使う理由」を中心に述べました。
また続編として、Dockerfileの使い方についたまとめ記事もありますので、ことらもどうぞ!
Dockerの最大の利点は、「環境構築の手軽さ」でした。以下の図のように、事前に作成したDockerfileを他のエンジ…
それでは、良いエンジニアライフをお過ごし下さい!
ここまでお読み頂き、ありがとうございました。