Dockerについて調べて動かして完全に理解したディスク容量の節約術
なにかと役に立つだろうDockerのテンプレートを作ってわかったこと ────
- イメージは複数の「レイヤ」で構成される
- レイヤはDockerfileの各コマンドに対応する
- Dockerfileは上から順番に解釈される
- 各コマンドの実行結果をレイヤとして積み上げる
- 内容が同じ2つのDockerfileでビルドした2つのイメージはレイヤを共有するため消費容量は1つ分のみ
- 上位レイヤを変更するとレイヤが分離するため容量を消費する
- 下位レイヤは未変更なので変わらず共有される
- Dockerfileの一番下にコマンドを追加すると新規レイヤを積み上げるため容量を消費する
- 下位レイヤは未変更なので変わらず共有される
- 各レイヤは直下のレイヤに強く依存する
- 下位レイヤを変更するとレイヤが分離するため容量を消費する
- 下位レイヤが分離すると依存関係が崩れるため上位レイヤも分離して容量を消費する
- コマンドの順番を入れ替えただけでも依存関係が崩れるため容量を消費する
そして、スレチだから触れないけど「OverlayFS」や「コンテナ」などの用語を知ると、あら不思議 ──── APFSの登場から長らく不可解だったmacOSのディスク構造を完全に理解した!