ゼロからのDocker入門
この記事は何か
Dockerを全く知らない段階から、下記を目指すためのロードマップです。
- Dockerとは何か?全体像を理解する
- Dockerで開発環境を構築できる
- 開発現場で既存のDockerfileやdocker-compose.ymlを理解し、編集できる
- その先にあるKubernetesやAWSなどに興味を持つ
TLDR
公式Docのチュートリアルをやると理解が捗ります。
https://docs.docker.com/
英語の文章を読むのが辛い時は
最近話題のDeepLで翻訳すると日本語で読めます。
英語は読めるが日本語の方が理解が早いという方も是非。
https://www.deepl.com/translator
Dockerとは
Docker overview | Docker Documentation
Dockerが従来の仮想化ソフトウェアよりも優れている理由
- 軽量である(容量が小さい)
- 高速である(起動や処理が早い)
軽量、高速である理由は下記を参考にしてください。
Dockerとは何か、何が良いのか
Docker入門(第一回)~Dockerとは何か、何が良いのか~ | さくらのナレッジComparing Containers and Virtual Machines
What is a Container? | App Containerization | Docker
Dockerを導入するメリット
- 開発環境構築が簡単になる
- Dockerfileやdocker-compose.ymlを用いて、開発環境をコード管理できます
- プログラミング言語やデータベースの手動での導入...といった煩わしい作業から開放されます
- 開発環境を簡単に共有できる
- コード管理された開発環境のため、バージョン差異なく簡単に共有、構築ができます
- そのため、新規参加メンバーが環境構築で失敗、躓くことがなくなります
- また、PC購入時やデスクトップとノートPCの使い分けの際にも、楽に環境構築ができます
- 開発環境を簡単に実行できる
- docker-composeにより、1コマンドでアプリケーション全体の起動を行えます
- そのため、アプリケーションやデータベースなどをそれぞれ実行する手間が省けます
- また、Railsは起動したけど、PostgreSQLの起動し忘れた...などの問題を防げます
- テスト環境や本番環境の構築も楽になる
- ローカルの開発環境と同じ環境を簡単にCircle CIやAWS上に作ることができます
- そのため、ローカルではテスト通るけど、CIだと落ちてしまうなどの問題を少なくできます
- ただし、開発環境と本番環境は全く同じであることは少ないため、工夫は必要です
より詳細に
https://docs.docker.com/get-started/#docker-concepts
手を動かして学ぶ
下記リンクのどれか良さそうなものを選び、image、container、volume、docker-compose、networkなどDockerの主要機能や概念について学びます。私は一通りやりましたが、公式Docのチュートリアルが最もコンパクト、過不足なくまとまっており分かりやすいです。
オススメ
- Orientation and setup | Docker Documentation
その他の選択肢
- Dockerでプログラマが最低限知るべきことが、最速でわかるチュートリアル - Qiita
- Linuxコマンドから始めるDocker ~ BE A FIRST PENGUIN AND GROW AS WHALE | Udemy
- ゼロからはじめる Dockerによるアプリケーション実行環境構築 | Udemy
- Docker Deep Dive by Nigel Poulton [Leanpub PDF/iPad/Kindle]
Ruby on Rails + PostgreSQL + Docker環境の構築
WIP
Dockerの次に学ぶこと
WIP
参考文献
公式Doc
https://docs.docker.com/
概要、詳細はもちろんのこと、クイックスタート(チュートリアル)やRailsでの利用方法といったSampleも充実しているため、必見です。Docker Deep Dive
https://leanpub.com/dockerdeepdive
Amazonレビューが高かったので読みました。説明が丁寧で、各章において概要や背景から入り、その後手を動かしながら詳細を学ぶというスタイル。個人的には冗長に感じてしまう部分も多々ありましたが、全体的に分かりやすいのでオススメです。なお、Amazonの方が安いですがコピー制限がありDeepLで最後まで日本語翻訳できません。leanpubで購入してpdf落とすと制限なく翻訳できます。