マルチステージビルドとは?
マルチステージビルドとは、複数のビルドステージを定義するDockerfileの手法で、後のステージが前のステージから必要な成果物だけをコピーします。フルなツールチェーンを備えた大きなbuilderステージでコンパイルし、その結果生成されたバイナリだけを最小限の最終イメージにコピーできます。結果として、ビルド時の肥大化のない、小さくクリーンなランタイムイメージが得られます。
なぜ重要か
コンパイラ、ビルドツール、中間ファイルを最終イメージに含めると、イメージが肥大化し攻撃対象領域が広がります。マルチステージビルドはビルド依存関係をランタイムイメージの外に保ち、より小さく、pullが速く、より安全なイメージを生み出します。多くの場合、最終ベースにdistrolessを組み合わせます。
関連する概念
- 最終ステージは必要な成果物だけをコピーする
- distrolessのbase imageと相性が良い
- イメージサイズと攻撃対象領域を削減する
関連ガイド
What Is a Distroless Image?A distroless image contains only your application and its runtime dependencies, with no shell, package manage…
What Is Docker Layer Caching?Layer caching reuses unchanged container image layers across builds, so only the layers affected by a change…
What Is a Base Image?A base image is the starting container image a build extends with FROM, providing the OS and runtime foundati…