一言定義
変更のない構築工程をスキップし、ビルド時間とネットワーク負荷を劇的に削減する「論理的差分管理」。
概要
Dockerビルド時、Dockerfileの各命令の結果を保存(キャッシュ)しておき、再ビルド時に命令とソースに変化がなければその結果を再利用する仕組み。ビルドの高速化において最も重要な最適化技術である。
IT・技術的側面
-
命令のハッシュ化: Dockerfileの各行と、追加されるファイル(ADD/COPY)の内容をハッシュで追跡。
-
連鎖的な無効化: 一度あるレイヤーで変更が検知されると、それ以降の命令はすべてキャッシュが破棄され再実行される。
-
メタデータの管理: キャッシュはローカルに保持されるが、CI/CD環境ではリモートレジストリからキャッシュを引き継ぐ(
--cache-from)設計が必要。
ビジネス的価値とリスク
-
価値:
-
開発サイクルの加速: コードの微修正を数秒でビルド・検証可能にし、エンジニアの集中力を維持。
-
CI/CDコスト削減: コンピューティングリソースの消費を抑え、クラウドCIサービスの料金を節約。
-
デプロイの即時性: 緊急のパッチ適用時、変更箇所のみをビルドして迅速にリリース。
-
-
リスク:
-
隠れた不整合:
apt-get updateなど、外部状態に依存する命令がキャッシュされると、古いパッケージが使い続けられる。 -
キャッシュの肥大化: 古いキャッシュがディスクを圧迫し、ビルドマシンのパフォーマンスを低下させる。
-
定量的指標
-
Cache Hit Rate: 全ビルド工程におけるキャッシュ利用率。
-
Incremental Build Time: 部分変更時のビルド完了時間。
-
Registry Bandwidth Savings: キャッシュ利用によるデータ転送削減量。
概念の配置(Context)
-
Position: 計算機科学における「メモ化(Memoization)」のインフラ的応用。
-
Contrast: フルビルド|毎回ゼロから環境を構築するフルビルドに対し、レイヤーキャッシュは「過去の資産」を賢く再利用する。
関連キーワード
-
ビルド最適化
-
Dockerfile
-
ハッシュ値
-
CI/CD
-
増分ビルド
-
パフォーマンス
-
冪等性
-
差分管理