Docker が少し前から「マルチステージビルド」なる機能を提供していましたが、ちょっとだけ使い込んでみる機会があったので、自分なりにまとめてみました。 TL;DR 1つの Dockerfile に何個も FROM が書ける 1つの FROM から次の FROM or ファイル末尾までが1ステージ COPY --from=foo で、既出のステージや出来合いのイメージからファイルをつまみ食いできる RUN の成果物だけあればよいようなケースに最適 (コンパイル言語系のシステムとか) FROM の元ネタとして、既存イメージの他に既出のステージも指定できる 多様だが共通部が多いようなイメージを作るケースで DRY にできる COPY --from=foo で、既出ステージの成果物つまみ食い COPY --from=foo の例 次は、 jemalloc をビルドするだけの一時的なイメージを作る