KDOC 571: イメージレジストリにキャッシュを保存してビルドを高速化する
この文書のステータス
- 作成
- <署名>
- レビュー
- <署名>
概要
CIでDockerイメージをビルドするとき、ビルドインスタンスはビルドごとに独立して作成され、自動ではキャッシュが残らないことが多い。キャッシュを外部に保存するのが必要になる。
1つの方法として、Dockerイメージとしてレジストリにキャッシュを保存する方法がある。
このときのポイントは、buildxの --cache-to=type=registry,ref=...,mode=max オプションによって中間レイヤーも保存することである。通常のDockerイメージは最終ステージのレイヤーだけをキャッシュ保存しており、1行でも変わると中間ステージのキャッシュを利用できずすべてやり直しになってしまう。中間レイヤーを保存していると、変更が起きたビルドステージ以降だけの実行ですむ。
また、キャッシュはpull/pushですべて転送されるわけではないのでオーバーヘッドは少なくなる傾向がある。すでにレジストリに存在するレイヤーはスキップされる。
キャッシュを含めることによって、イメージサイズは大きくなるので、各レイヤーサイズでのサイズを小さく保つのも重要になる。
関連
なし。