Dockerレイヤーキャッシュとは?
レイヤーキャッシュとは、Dockerfileの各命令がキャッシュ可能なレイヤーを生成し、そのレイヤーまたはそれ以前の何かが変わった場合にのみレイヤーが再ビルドされる、コンテナビルドの最適化です。変更のないレイヤーはキャッシュから再利用されるため、アプリケーションコードを編集してもすべての依存関係の再インストールは強制されません。安定したステップを先に来るようDockerfileを並べると、キャッシュヒットが最大化されます。
なぜ重要か
レイヤーキャッシュがないと、イメージビルドのたびにすべての依存関係をゼロから再インストールすることになり、遅く無駄が多くなります。エフェメラルなCI runnerではローカルのレイヤーキャッシュが消えるため、チームはリモートのレイヤーキャッシュ(またはレジストリバックのキャッシュ)を使い、新しいrunnerでも恩恵を受けられるようにします。マネージドのrunnerプラットフォームはこのキャッシュを提供することが多いです。
関連する概念
- キャッシュヒットのためDockerfileのステップを安定的なものから変動的なものへ並べる
- エフェメラルなrunnerにはリモートのレイヤーキャッシュが必要
- build cacheのコンテナ版に相当する
関連ガイド
What Is a Build Cache?A build cache stores intermediate build outputs so unchanged work can be reused across runs instead of recomp…
What Is a Multi-Stage Build?A multi-stage build uses several stages in one Dockerfile to compile in a heavy stage but ship only the slim…
What Is a Container Registry?A container registry is a storage and distribution service for container images, where builds push and deploy…