- Dockerっていう言葉を最近よく聞くけど、よく分からない
- Dockerって何が便利なの?
- コンテナってよく聞くけど、何?
今回は、そんな疑問に答えます!
Dockerは、今や初心者であっても、絶対に習得したいスキルの一つです。
この記事を読めば、Dockerについて怖がらずに話せるようになります。是非ともこの機会にDockerの概要とDockerを使うことで得られるメリットだけでも覚えて帰って下さい!
開発環境を構築することは非常にハードルが高い
Dockerについて理解するため、あなたに質問です。
自分のPCに開発環境を準備しようとした時に、以下のような経験はないでしょうか?
- インストールしようと、インストーラーを実行したら、エラー発生
- 苦労しながらエラーメッセージを見て、何とか解決
- その後、インストーラーを再実行したら、今度は違うエラーが発生
- うんざりして、辞めてしまう
- もう一生やらない
エンジニアであれば、あるあるの話です。環境構築は、スタートラインに立つための作業ですが、実はハードルが高い作業です。
バージョンの違いとか、プログラムとの依存関係とか、そもそも手順を間違えたとか、様々な要素でエラーが発生してしまい、スタートラインにも立てずに、諦めてしまう初心者が多いです。
また、初心者に開発環境の構築を指示する人にとっても、悩みがあります。
開発メンバーのみんなに環境構築をお願いしたら、それぞれ違うエラーを持ってきて、一個一個解決するのは、とても労力がいります。わざわざ、手順書を用意するのもめんどくさいです。
「あー、何か良い仕組みがないものかなぁ?」と思いながら、エラーを一つずつ潰して、環境構築を行っていました。
Dockerが誕生する前までは。
Dockerが便利な理由
Dockerの最大の便利さは、上記のようなバージョン差異などの環境差異をなくして、手軽に環境構築が出来るようになったという点です。
地味に感じるかも知れませんが、これは凄いことです。
「Docker for Windows/Mac」をインストールして、「Dockerfile」と呼ばれるファイルに「プログラムが動くための依存関係や設定」を書き、コマンドをいくつか叩くことで、環境構築が出来るのです。
ということは、Dockerfileを一度作ってしまえば、それをチームメンバーに渡して、「このコマンド叩いといて」と言えば、すぐに開発環境が出来るのです。
図にすると以下のような感じです。
Dockerfileが設計書となるので、わざわざインストール手順書を作成する手間も省けます。
初心者の方は、Githubとか、会社の先輩とかから取得したDockerfileを利用して、コマンドを打つことで、同じ環境がすぐに出来上がるのです。
Dockerの概要 〜コンテナとは何か?〜
Dockerについて知るためには、コンテナ技術について知ることが重要です。以下からは、コンテナについて話します。
Dockerとはエコシステムの総称である
Dockerの便利さが何となく分かったところで、もう少し技術的な概要について説明します。
Dockerとは、「コンテナを作ったり、動かしたりするためのエコシステムの総称」です。具体的には以下の図のようになります。
エコシステムとは、日本語で直訳すると「生態系」という意味となります。
要するに、「Dockerは色々な技術を組み合わせて、それぞれが繋がり合って、コンテナを作ったり、動かしたりが可能になる大きなシステムのことである」ということです。
コンテナ技術とは何か?
ここからはコンテナ技術について、解説をさせていただきます。Dockerはコンテナ技術を使っているので、理解が必要です。
まず、身近にあるもので考えてみましょう!意外と身近なものに例えて技術用語を覚えることで、頭に入るものです。
上記の写真に写っているもの、何かお分かりでしょうか?そう、輸入された物資を船で運ぶために使う「コンテナ」です。
このコンテナには何が入っているのでしょうか?あるコンテナにはバナナが入っていたり、あるコンテナには小麦が入っていたり、またあるコンテナにはチョコレートが入っているかも知れません。
コンテナはバラバラの物資をまとめて、船で運ぶために使われます。また形が四角いので、いっぱい積むことが出来ます。
ここでいうコンテナ技術も、上記の貨物で使うコンテナも役割としては同じです。
例えば、あるコンテナにはバックエンドで使うRubyの実行環境が入っていて、あるコンテナにはフロントエンドで使うReactの実行環境が入っていて、あるコンテナにはDBであるMySQLが入っている。
そして、「実は船がOSの役割を担っているので、それぞれのコンテナを直接操作することが出来る」のです。
ここまでの話を踏まえて、Dockerの公式ロゴを見てみると、以下のようになっています。
クジラがコンテナを運んでいるロゴになっています。
Dockerは実行環境をまるごとコンテナという箱に入れて、持ち出すための技術なのです。
Dockerfileでコンテナを作る
次は、「コンテナはどうやって作って、動かすのか」という話です。
上記では、Dockerfileを他のエンジニアに渡すと、開発環境が出来ていました。
コンテナを作るためにはDockerfileが必要なのです。具体的には以下のようになります。
- Dockerfilemにイメージと呼ばれるコンテナの発注書のようなものを書いて、イメージをビルドする。
- イメージを元にコンテナが出来上がり、それを実行することでコンテナが起動する。
図にすると、以下のような感じになります。
Dockerfileの使い方については、以下の記事がおすすめです。
結論
今回は、Dockerの概要と、Dockerが便利な理由を書かせて頂きました。
まとめると、以下のような感じです。
- Dockerを使うことで、環境構築が凄く楽になる。
- Dockerの技術コアはコンテナ技術である。
- コンテナとはプログラムの実行環境が入った箱である。
- Dockerfileからイメージをビルドして、コンテナを起動することで使えるようになる。
ここまで記事を読んで、Dockerを使いたくなってきたでしょうか?
少しでもDockerについて、理解して頂き、興味を持って頂けたら幸いです。
以下は参考書籍です。
コメント
コメント一覧 (5件)
[…] 【初心者】なぜDockerを使うべきなのか、最初から丁寧に語りたい […]
[…] 【初心者】なぜDockerを使うべきなのか、最初から丁寧に語りたい […]
[…] 【初心者】なぜDockerを使うべきなのか、最初から丁寧に語りたい […]
[…] 【初心者】なぜDockerを使うべきなのか、最初から丁寧に語りたい […]
[…] […]