マルチステージビルド

Docker 中級

Mike Metzger

Data Engineering Consultant

シングルステージビルド

  • 典型的なDockerイメージは単一のFROMで作成されます
  • ベースイメージへの追加は容量を増やし、管理を複雑にします
  • 事前にコンパイルが必要なアプリを想定します
    • すべての要素をイメージに入れ、コンパイルし、最終イメージを設定できます
    • ただし未使用の不要物がイメージ内に残りがちです
FROM ubuntu
RUN apt update
RUN apt install gcc -y
...
RUN make
CMD ["data_app"]
Docker 中級

マルチステージビルド

  • マルチステージビルドは複数のコンテナを使います
  • 通常は1つ以上のビルド段階があります
  • 最終コンポーネントを最終イメージにコピーします
  • その後、ビルド段階は自動で破棄されます
    • イメージを小さく保てます
  • Dockerfileに追加の構文を使います
    • AS <alias>
    • COPY --from=<alias>
Docker 中級

マルチステージビルドの例

# Create initial build stage
FROM ubuntu AS stage1

# Install compiler and compile code RUN apt install gcc -y ... RUN make
# Start new stage to create final image FROM alpine-base
# Copy from first stage to final COPY --from=stage1 /data_app /data_app
# Run application on container start CMD ["data_app"]
Docker 中級

練習してみましょう!

Docker 中級

Preparing Video For Download...