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