【永久保存版】0からDockerを勉強するならこのロードマップに従え！

![docker-loadmap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/761454bb-4742-7e8a-f8c0-11344fefbe25.png)

# はじめに

こんにちは、WatanabeJin(@Sicut_study)です。

今回は私が初学者のときに最も苦労した**Docker**の技術を身につけるためのロードマップを紹介していきます。

**Dockerが難しいのはなんといっても概念的なところ**だと思っています。新人時代の私は入社していきなり「Dockerで環境構築して」とだけ先輩に言われて何もわからない状態から自力でなんとか使えるところまで1ヶ月かけて学びました。<font color="gray">(プログラミング経験なしでいきなりDockerは辛かった)</fotn>

その後、同じくプログラミング経験なしの方にDockerを指導した際に、**この流れでやっていけば技術として身につくな**と思ったのでまとめていきます。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">概念が難しいDockerの学び方<br><br>私自身がものすごく1年目の時につまづいたDockerの勉強の仕方についてどのように身につけていったかを紹介します。… <a href="https://t.co/2h9px5ujmZ">pic.twitter.com/2h9px5ujmZ</a></p>&mdash; Watanabe Jin (@Sicut_study) <a href="https://twitter.com/Sicut_study/status/1745036832524599403?ref_src=twsrc%5Etfw">January 10, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# この記事の対象者
- Dockerという言葉は聞いたことあるがわからない人
- エンジニアになるために勉強している人
- もっと環境構築を楽にやりたい人

# Dockerを勉強するときに大事なこと

<font color="red">**Dockerはとにかく実際に自分で手を動かす機会を作らないと身につくことはありません**</font>

これを意識してロードマップを進めてみてください

# ロードマップ

このロードマップは2週間から1ヶ月ほどを想定して作成しています。
ロードマップを通して、自分が使っているアプリケーションをDockerの上で起動できるようになることを目標にしています。

## 1. 書籍で学習する

Dockerに関してはいきなり手を動かそうとすると、そもそもの概念的なところがよくわからずに調べても何言っているかわからないという事態に陥ります。

そこでまずはDockerコマンドやdocker-composeの役割を知ることも含めて<font color="red">**書籍を1冊手を動かして学習**</font>ことから始めます。

https://www.amazon.co.jp/%E4%BB%95%E7%B5%84%E3%81%BF%E3%81%A8%E4%BD%BF%E3%81%84%E6%96%B9%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8B-Docker-Kubernetes%E3%81%AE%E3%81%8D%E3%81%BB%E3%82%93%E3%81%AE%E3%81%8D%E3%81%BB%E3%82%93-%E5%B0%8F%E7%AC%A0%E5%8E%9F%E7%A8%AE%E9%AB%98/dp/4839972745/ref=sr_1_5?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1YIHZE7LY35MA&keywords=docker&qid=1704694477&sprefix=docke%2Caps%2C172&sr=8-5

私は2021年の時点で購入可能なDockerの本をほぼすべて読みました。
その段階ではこちらの書籍がわかりやすいと感じました。

2024年現在では以下の書籍が販売されており、こちらも良さそうな気配はしています。

https://www.amazon.co.jp/%E9%96%8B%E7%99%BA%E7%B3%BB%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEDocker%E7%B5%B5%E3%81%A8%E3%81%8D%E5%85%A5%E9%96%80-%E9%88%B4%E6%9C%A8%E4%BA%AE/dp/4798071501/ref=sr_1_7?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1YIHZE7LY35MA&keywords=docker&qid=1704694477&sprefix=docke%2Caps%2C172&sr=8-7

学習の期間は<font color="blue">**1週間程度**</font>で一気に終わらせるようにしましょう
また**Kubernetes**に関しては一切触らないでください。

## 2. 扱っている言語の環境を作る

ここから実際に手を動かしてDockerの技術を学んでいくフェーズになります。
<font color="red">**あなたが扱っている言語のDockerfileを使って、docker-composeで起動できるようにしましょう。**</font>

その環境の上で自分の使っている言語のアプリケーションを起動します。
ここまでできたらこのフェーズは完了です。

アプリに関しては作り始めると更に時間がかかるので、Hello Worldを返すだけの簡単なWebアプリで問題ありません。

そしてここからが現代ならではの話。いま**ChatGPT**を使えば起動するDockerファイルの中身をすべて教えてくれるようになりました。
これではDockerfileの中身を理解しなくても起動は簡単にできてしまいます。しかし、あなたはDockerを理解するためにロードマップをやっているので、<font color="blue">**1行1行の設定を何のためにやっているのか理解する**</font>ことを意識しましょう。

## 3. コンテナレジストリを使えるようにする

ここまでできたら最後はDockerイメージのビルドやPush、Pullなどで何が行われているのかを実際にコンテナレジストリを使いながら学んでいきます。

コンテナレジストリは何を利用しても良いですが、私は`DockerHub`を利用しました。

ここでやることは自分が作ったDockerイメージをレジストリにPushします。PushしたイメージをPullしてdocker-composeで起動することを目指します。

ここまで進めた方ならやりたいことのイメージはついているかと思います。
ステップ3まで終わらせることができたらDockerについてはある程度基本が抑えられて、自分でも利用できるようになるはずです。

## ex. デプロイに挑戦してみる

ここまで理解した方はAWSなどのクラウドサービスを利用して、イメージを使いデプロイすることに挑戦してください。

ここからの話は以下の記事に詳しく乗っています。

https://qiita.com/Sicut_study/items/6238413b66e274bccd7b

このロードマップでは、どうやってWebサイトにアプリが公開されているんだろう、CI/CDはどのような仕組みで動いているのだろうという知見が抜けています。

ここまでやることによってある程度Dockerやコンテナ技術について理解したという段階になれるかと思います。

# おわりに

今回は実際に私が教えている中でもっとも効率的にDockerを学習する流れについて紹介してみました。そろそろエンジニア5年目も近くなっていますが、徐々に1年目の大変だった記憶を忘れ始めてくる頃なので、忘れないうちに記事にして今後も投稿したいとかんがえています。

ここまで読んでいただけた方は**いいね**と**ストック**よろしくお願いします。
@Sicut_study を**フォロー**いただけるととてもうれしく思います。

今週もプログラミング頑張りましょう！

![jisou-banner.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/217ea52d-8130-3266-0619-990fa968408a.png)

# おすすめ記事

https://qiita.com/Sicut_study/items/cff86da10b8ee0809ccb

# 0からシリーズ

https://qiita.com/Sicut_study/items/78910cd8d103b8d45a73

https://qiita.com/Sicut_study/items/6238413b66e274bccd7b

https://qiita.com/Sicut_study/items/1febe7bfa68c8b0b1cc0

# About Me

Webエンジニア転身して1年間本気で勉強
転職ドラフトで高額オファーを複数獲得
そこでの経験からアウトプットやマインドセットの発信に強みがある
エンジニアをやりながら、起業に挑戦中
アイデア作りやパブリックスピーキングを得意としてる

■ Twitter
https://twitter.com/Sicut_study
■ Instagram
https://www.instagram.com/himariajin
■ Youtube
https://www.youtube.com/channel/UCBFrGAJhPuuaoLwUIHBILsA
■ TikTok
https://www.tiktok.com/@sicut_study
■ プログラミングコーチングJISOU
https://projisou.jp
■ 登壇依頼などご依頼はこちらから
himaria.jin.watanabe@gmail.com