過去問ドリル

LinuCレベル3 プラットフォームスペシャリスト コンテナ技術の利用 問17

コンテナ技術の利用/コンテナの操作と管理

Dockerfileのマルチステージビルドを使う主な目的として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「コンテナ技術の利用」に対応。実際の試験問題ではありません)

正解:C

解説

マルチステージビルドでは、Dockerfile に複数の FROM 命令を書くことで複数のビルドステージを定義できます。典型的な使い方は、最初のステージ(ビルダー)でコンパイラや依存ライブラリを用いてアプリをビルドし、2 番目のステージでは最小限のベースイメージ(例: alpine, distroless)から始めて COPY --from=builder でビルド成果物だけをコピーする方法です。これにより、コンパイラや中間ファイルを含まない軽量な最終イメージが作成できます。docker build コマンドで通常通りビルドでき、--target オプションで途中のステージまでビルドすることも可能です。

選択肢ごとの解説

  • A誤り。マルチステージビルドは 1 つの Dockerfile 内で複数の FROM 命令を使いビルド工程を分ける機能です。複数の Dockerfile を統合する機能ではありません。
  • B誤り。依存関係があるステージは順番に実行されます。BuildKitを使う場合でも、並列化は独立したステージに限られ、マルチステージビルドの主目的はビルド依存ツールを最終イメージに含めないことによるイメージサイズの削減です。
  • C正しい。ビルドツール類をビルドステージに閉じ込め、最終ステージへは成果物だけをコピーすることで、不要なファイルを含まない軽量なイメージを作成できます。
  • D誤り。マルチステージビルドは docker build コマンドで使用できます。Dockerfile に FROM ... AS name の形で複数のステージを記述して通常どおりビルドします。
LinuCレベル3 プラットフォームスペシャリストの問題を演習モードで解く