一言定義

変更のない構築工程をスキップし、ビルド時間とネットワーク負荷を劇的に削減する「論理的差分管理」。

概要

Dockerビルド時、Dockerfileの各命令の結果を保存(キャッシュ)しておき、再ビルド時に命令とソースに変化がなければその結果を再利用する仕組み。ビルドの高速化において最も重要な最適化技術である。

IT・技術的側面

  • 命令のハッシュ化: Dockerfileの各行と、追加されるファイル(ADD/COPY)の内容をハッシュで追跡。

  • 連鎖的な無効化: 一度あるレイヤーで変更が検知されると、それ以降の命令はすべてキャッシュが破棄され再実行される。

  • メタデータの管理: キャッシュはローカルに保持されるが、CI/CD環境ではリモートレジストリからキャッシュを引き継ぐ(--cache-from)設計が必要。

ビジネス的価値とリスク

  • 価値:

    • 開発サイクルの加速: コードの微修正を数秒でビルド・検証可能にし、エンジニアの集中力を維持。

    • CI/CDコスト削減: コンピューティングリソースの消費を抑え、クラウドCIサービスの料金を節約。

    • デプロイの即時性: 緊急のパッチ適用時、変更箇所のみをビルドして迅速にリリース。

  • リスク:

    • 隠れた不整合: apt-get update など、外部状態に依存する命令がキャッシュされると、古いパッケージが使い続けられる。

    • キャッシュの肥大化: 古いキャッシュがディスクを圧迫し、ビルドマシンのパフォーマンスを低下させる。

定量的指標

  1. Cache Hit Rate: 全ビルド工程におけるキャッシュ利用率。

  2. Incremental Build Time: 部分変更時のビルド完了時間。

  3. Registry Bandwidth Savings: キャッシュ利用によるデータ転送削減量。

概念の配置(Context)

  • Position: 計算機科学における「メモ化(Memoization)」のインフラ的応用。

  • Contrast: フルビルド|毎回ゼロから環境を構築するフルビルドに対し、レイヤーキャッシュは「過去の資産」を賢く再利用する。

関連キーワード

  • ビルド最適化

  • Dockerfile

  • ハッシュ値

  • CI/CD

  • 増分ビルド

  • パフォーマンス

  • 冪等性

  • 差分管理

  • メタデータ