Dockerを学びたい!
でも何から学んだらいいんだろう?
そんな時期が私にもありましたので、勉強チャートを書いておきます
1.環境を構築
まずはLinuxのコマンドに馴れておこう!
DockerではLinuxのコマンドを扱うことが多い。
そのため、Dockerのコンテナ操作を一通りできるようにするためにはLinuxcのコマンドである程度ファイル操作やディレクトリ操作をマスターしておこう。
- 参考サイト
- 【初心者向け】 基本のLinuxコマンド一覧!操作別紹介
Dockerをインストール
Linuxの操作に馴れているならばDockerをインストールしてあげよう。
-
Dockerを扱うためには以下の環境が必要になってくる
- WSL2
- Dockerをインストールできる環境
- そこそこメモリがあるパソコン
-
参考サイト
- Windows に Docker Desktop をインストール
- 【簡単な4つの方法】UbuntuにDockerをインストールするには
2.Dockerって?
なぜ仮想環境ではなくDockerを使うのか再確認
Dockerの環境を用意できた、しかしこれって何に使うの?
そのためにまずはDockerとは何かを知っておくこと(仮想マシンとは何が違うのか、明確なメリット等)
- 参考サイト
- Docker入門(第一回)~Dockerとは何か、何が良いのか~
- 【初心者向け・図解】Dockerとは?現役エンジニアがわかりやすく解説
- Dockerとは何か?初心者にもわかりやすく仕組みやメリットを解説
コンテナ型を使うメリット
仮想環境では様々な技術が使われているが、コンテナを使う意味を改めて知っておくこと。
- 参考サイト
- Docker(ドッカー)とは?4つの要素や導入すべき理由、環境構築の流れを紹介
- いまさらだけどDockerに入門したので分かりやすくまとめてみた
Docker完全に理解したならば次のステップに移行しよう
3.コマンドに馴れよう
Dockerについて理解ができてきたら、実際にDocker触ってみよう
いきなりDockerで好きな環境を作るのはハードルが高いので、まずは公開されているイメージからコンテナを立ててみること!
今あるイメージやコンテナを扱う感覚に馴れてきたら次に自分でイメージを作ってみよう
- 参考サイト
- (超オススメ!)実践 Docker - ソフトウェアエンジニアの「Docker よくわからない」を終わりにする本
- ゼロから始めるDocker体験記
Dockerイメージの操作
sarchコマンドを使ってイメージを取得してみる
まずは完成されているコンテナイメージから、実際のコンテナを作ってみること
公式サイトのコンテナ(Docker hub)からイメージ検索(docker container sarch
)を使ってコンテナを検索してあげよう
- 参考サイト
- docker searchコマンドの使い方(実例で解説)
pullコマンドでイメージを取得する
探しているコンテナがあればイメージ取得(docker container pull
)を使って取得しよう
imageコマンドで所持しているイメージを確認してあげること
イメージを取得できたならば、イメージリスト(docker container image
)を利用し、イメージリストを確認したり、削除できるようにする
実際にコンテナを作ってあげられるようにする
runコマンドを使って生成と起動を同時に行う
Docker run
を使えばイメージからコンテナの生成と起動ができる。が、生成と起動にはちゃんと使い分けがあるので知っておくこと。
また、それに付随するオプションについても知っておくこと
execコマンドを使ってコンテナ内で作業する
データベースなどを含めてコンテナ内でコマンドを実行できるようにする
この時にオプションが増えてくるためしっかり手に馴染ませておくこと
stopコマンドでコンテナを停止させる感覚を身に着ける
不要になったコンテナは停止させて無駄なプロセスを省いていこう
rmコマンドで不要になったコンテナ削除するようにしよう
コンテナは停止しただけでは残り続ける。
なので、不要なコンテナは削除するということを覚えておこう
4.Dockerfileを使ってイメージの作成
自分でイメージを作成するためにはDockerfileを記入する必要がある。
なので好きなアプリケーション、サーバーを立てるためにはDockerfileを必ず書く必要があるため絶対に覚えておこう!
- 参考サイト
- Docker ドキュメント日本語化プロジェクト
レイヤーとは
コンテナを作っていくうえで欠かせない知識はレイヤーを積み重ねていくという感覚。
必ず、コンテナレイヤーというものを知っておこう
- 参考サイト
- Dockerイメージのレイヤの考え方とイメージの軽量化について
Docker規約
Dockerにも規約は存在する。
規約違反にならないよう、ルールを知っておこう
- 参考サイト
- Dockerの"分からない"を簡単にメモ
Docker networkとは
Dockerでコンテナを扱う上で意識しなければならないことにコンテナ間の通信が含まれる。
コンテナがどうやって動いているかを知るために絶対にnetworkの仕組みについて知っておこう
- 参考サイト
- dockerコンテナのネットワーク
- network
bridge
none
host
Docker Volumeとは
コンテナを生成と削除を行っているとどうしても、データのやり取りが無駄
Docker Volume機能を使えばコンテナ外のストレージが利用可能となる
- 参考サイト
- Docker-docs-ja ボリュームの使用
- Dockerでvolumesを設定する
- Docker の Volume がよくわからないから調べた
bind mount
volume
tmpfs mount
Dockerfileを作ってみよう
Dockerfileを書く上での知識は十分あるはずなので、ここからは多機能なコンテナを作ってみよう。
- 参考サイト
- Dockerfileの基本的な書き方
- Dockerfileの書き方, 利用する命令, 作成手順
各レイヤーに記述してコンテナをカスタマイズ
Dockerfileに記述することで様々なカスタマイズが可能となる。
書き方を理解しておこう。
Dockerのお掃除
pruneコマンドを利用することでDockerのお掃除が可能となる。
キャッシュ削除について知ること。
- 参考サイト
- Dockerで未使用オブジェクトを消す「prune」オプションの整理
5.複数のコンテナを扱うということ
自分でコンテナを立てられるようになったら複数のコンテナ扱ったアプリケーション制作にチャレンジしてみること
Dockerでは1コンテナ1機能という決まりがあるため、データベースなどを取り扱う場合は確実に複数のコンテナを立てる必要がある。
複数のコンテナを立てる際にdocker-compose
が使われていることが多いため、併せて学んでおくこと。
Docker Composeとは
Docker Composeを使えば複数のコンテナ操作も楽に行える。
ほとんどのコンテナで使われているため、しっかりマスターしておくこと。
- 参考サイト
- 【入門】Docker Composeとは?インストールと使い方
- 【初心者向け・図解】Docker Composeとは?Dockerとの違いを現役エンジニアがわかりやすく解説
- Docker Compose入門 (3) ~ネットワークの理解を深める~
- 複数の Docker Compose 環境でネットワークを共有する
docker-compose.ymlの記述の仕方
docker-composeはコマンドでビルドできる
6.拡張機能を使って便利に開発
Dockerについて勉強してきたら、GUIを使ったDockerの取り扱いやコンテナを立ててみよう
Docker Desktop
GUIを使ったコンテナ操作ができる。
めちゃくちゃ簡単に導入できるから知っておこう
※ただし、利用規約によってはライセンス料が発生するため注意!
- 参考サイト
- 【入門】Docker Desktopとは何ができるの?インストールと使い方
- 【Docker Desktop】Windowsにインストール(WSL2)
.devcontainer
VSCodeの拡張機能にはDockerを楽に操作できるものがある。
使ってみて、自分にあった操作方法を学んでみよう
- 参考サイト
- VSCode Devcontainer 放浪記
- Devcontainer(Remote Container) いいぞという話 ~開発環境を整える~
まとめ
Dockerは環境構築のため、プログラミングとは違った混乱が多々あります
しっかりと学んでいきたい