fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

ゼロからのDocker入門

この記事は何か

Dockerを全く知らない段階から、下記を目指すためのロードマップです。

  • Dockerとは何か?全体像を理解する
  • Dockerで開発環境を構築できる
  • 開発現場で既存のDockerfileやdocker-compose.ymlを理解し、編集できる
  • その先にあるKubernetesAWSなどに興味を持つ

TLDR

公式Docのチュートリアルをやると理解が捗ります。
https://docs.docker.com/

英語の文章を読むのが辛い時は

最近話題のDeepLで翻訳すると日本語で読めます。
英語は読めるが日本語の方が理解が早いという方も是非。
https://www.deepl.com/translator

Dockerとは

Docker overview | Docker Documentation

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落とすと制限なく翻訳できます。