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

この文書のステータス

  • 作成
    • <署名>
  • レビュー
    • <署名>

概要

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

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

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

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

キャッシュを含めることによって、イメージサイズは大きくなるので、各レイヤーサイズでのサイズを小さく保つのも重要になる。

関連

なし。

Backlinks