2026-04-30·実装·⏱ 約 5 分
Docker 入門 ─ ML 環境の再現性を担保する
「自分の PC では動く問題」を解決する Docker。ML プロジェクトの Dockerfile・GPU 対応・docker-compose・Multi-Stage Build までを実用視点で。
Docker は『自分の PC では動く問題』の決定的解決策。同じ環境をチームメンバーや本番サーバで再現でき、MLOps の必須ツールです。
なぜ Docker?
- 環境の再現性: Python ・ ライブラリ ・ OS パッケージのバージョン固定
- ポータビリティ: ローカル → クラウド → 別チーム どこでも動く
- 隔離: ホストの環境を汚さない
- スケール: Kubernetes ・ Cloud Run ・ ECS で自動スケール
Hello Docker
Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]ビルドと実行
docker build -t my-ml-app .
docker run -p 8000:8000 my-ml-appML プロジェクトの実用 Dockerfile
scikit-learn + FastAPI
FROM python:3.12-slim
# OS パッケージ
RUN apt-get update && apt-get install -y \
build-essential \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# 依存だけ先にインストール(レイヤキャッシュ最適化)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# モデルファイル + コード
COPY model.pkl .
COPY src/ ./src/
EXPOSE 8000
CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000"]💡 レイヤキャッシュ
requirements.txt → COPY → RUN install を先にすることで、コード変更時にライブラリ再インストールを回避(ビルド時間 30 倍速)。
GPU 対応
PyTorch GPU の Dockerfile
FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04
RUN apt-get update && apt-get install -y python3.12 python3-pip
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "train.py"]GPU 付きで起動
docker run --gpus all -v $(pwd)/data:/app/data my-ml-appdocker-compose で複数サービス
docker-compose.yml
services:
api:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://postgres:pass@db/mldb
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: pass
POSTGRES_DB: mldb
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7
volumes:
pgdata:Multi-Stage Build(本番向け)
サイズを 1/10 に
# Stage 1: build
FROM python:3.12 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
# Stage 2: runtime(軽量)
FROM python:3.12-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY . .
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "main.py"].dockerignore は必須
.dockerignore
__pycache__
*.pyc
.git
.venv
node_modules
data/
*.csv
*.parquet
.envTips
- alpine vs slim: alpine は最軽量だが ML 系で不具合多い → slim 推奨
- python:3.12-slim は約 130 MB
- docker buildx: Mac ・ Windows でも Linux イメージビルド
- docker scout: 脆弱性スキャン
- pre-built ML イメージ: PyTorch/TensorFlow 公式を流用
学習リソース
- [FastAPI 入門](/blog/fastapi-introduction)
- [GitHub Actions で ML CI](/blog/github-actions-ml-ci)
- [MLOps 基礎](/blog/mlops-basics)
- [Vercel デプロイ](/blog/vercel-deployment-for-ai)
Related Articles
関連記事
- 2026-04-30実装Slack Bot を LLM で作る ─ FastAPI + OpenAI で社内ツール化Slack の Slash Command と Events API を使い、社内チャンネル内で動く LLM Bot を構築。FastAPI バックエンド + OpenAI で 1 日で完成。
- 2026-04-30実装FastAPI 入門 ─ ML モデルを 5 分で API にするPython の高速 Web フレームワーク FastAPI を使って、ML モデルを REST API として公開する最短ルート。型ヒント・自動ドキュメント・非同期対応の 3 拍子。
- 2026-04-30実装SQL 中級 ─ ML エンジニアが書く 7 つの定石パターンWindow 関数・CTE・PIVOT・自己結合など、データ分析で必須の中級 SQL を 7 パターン。BigQuery・Snowflake・PostgreSQL で動く形で。