KDOC 571: イメージレジストリにキャッシュを保存してビルドを高速化する

この文書のステータス

  • 作成
    • 2026-06-18 貴島
  • レビュー
    • 2026-06-21 貴島

概要

エフェメラルなCIランナーでDockerイメージをビルドするとき、ビルドインスタンスはビルドごとに独立して作成され、自動ではキャッシュが残らない。そのため、キャッシュを外部に保存する必要がある。

1つの方法として、Dockerイメージとしてレジストリにキャッシュを保存する方法がある。

このときのポイントは、buildxの --cache-to=type=registry,ref=...,mode=max オプションによって中間レイヤーも保存することである。通常のDockerイメージ(mode=min)は最終ステージのレイヤーだけをキャッシュ保存しており、前段ステージが1行でも変わると中間ステージのキャッシュを利用できずすべてやり直しになってしまう。中間レイヤーを保存していると、変更が起きたビルドステージ以降だけの実行ですむ。

キャッシュはpull/pushですべて転送されるわけではないのでオーバーヘッドは少なくなる傾向がある。すでにレジストリに存在するレイヤーはスキップされる。

関連

抽象。

  • 使い捨ての環境では蓄積が残らないので、外に保存して引き継ぐ
  • 最終結果だけでなく途中結果も残すと、変わった箇所以降のやり直しで済む

関連。

Backlinks