mcpField
D
docker-optimization

docker-optimization

github.com/pluginagentmarketplaceクラウド・DevOps273 回インストール43 週間前に更新
リポジトリ

docker-optimization について

Docker イメージとコンテナのサイズ、ビルド速度、実行性能を最適化する開発者向けスキルです。ベースイメージ、キャッシュ、マルチステージビルド、リソース制限の手法やチェックリスト、分析コマンドを扱います。

主な機能

  1. 01ベースイメージの選定
  2. 02レイヤーとキャッシュの最適化
  3. 03マルチステージビルドの指針
  4. 04実行時のリソース制限
  5. 05イメージとレイヤーの分析コマンド

活用シーン

  1. 01コンテナイメージのサイズ削減
  2. 02Docker のビルド時間短縮
  3. 03コンテナの CPU・メモリ制限の設定
  4. 04イメージレイヤーとキャッシュの問題調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-docker --skill docker-optimization

インストール後、Claude Code で/docker-optimizationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
config.yaml
optimization-tips.yaml
schema.json
references/
GUIDE.md
PATTERNS.md
scripts/
validate.py

詳細

Docker の最適化スキル

サイズの削減、ビルドキャッシュ、実行時のパフォーマンスを網羅した、Docker イメージとコンテナの包括的な最適化手法です。

目的

2024~2025 年の業界標準のベストプラクティスを使用して、イメージサイズを削減し、ビルド時間を短縮して、コンテナのパフォーマンスを最適化します。

パラメーター

パラメーター型必須デフォルト説明
targetenumいいえallsize/build/runtime/all
base_imagestringいいえ-現在のベースイメージ
current_sizestringいいえ-現在のイメージサイズ

最適化戦略

1. イメージサイズの削減
ベースイメージの選択
ベースサイズ用途
scratch0静的な Go/Rust バイナリ
distroless2-20MB本番環境のコンテナ
alpine5MB汎用
slim80-150MBapt パッケージが必要な場合
full500MB+開発専用
# Before: 1.2GB
FROM node:20

# After: 150MB (88% smaller)
FROM node:20-alpine
レイヤーの最適化
# Bad: 3 layers, 150MB
RUN apt-get update
RUN apt-get install -y curl
RUN rm -rf /var/lib/apt/lists/*

# Good: 1 layer, 50MB
RUN apt-get update && \
    apt-get install -y --no-install-recommends curl && \
    rm -rf /var/lib/apt/lists/*
不要なファイルの削除
# Clean package manager cache
RUN npm cache clean --force
RUN pip cache purge
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Use .dockerignore
# node_modules, .git, *.md, tests/, docs/
2. ビルド速度の最適化
レイヤーキャッシュ戦略
# Dependencies first (rarely change)
COPY package*.json ./
RUN npm ci

# Source code last (frequently changes)
COPY . .
RUN npm run build
BuildKit キャッシュマウント
# syntax=docker/dockerfile:1
FROM node:20-alpine

# Cache npm packages
RUN --mount=type=cache,target=/root/.npm \
    npm ci

# Cache pip packages
RUN --mount=type=cache,target=/root/.cache/pip \
    pip install -r requirements.txt
並列マルチステージ
# Parallel stages (BuildKit)
FROM node:20-alpine AS deps
COPY package*.json ./
RUN npm ci

FROM deps AS builder
COPY . .
RUN npm run build

FROM deps AS linter
COPY . .
RUN npm run lint
3. 実行時のパフォーマンス
リソース制限
services:
  app:
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 512M
        reservations:
          cpus: '0.5'
          memory: 256M
コンテナのチューニング
# Set memory limits
docker run --memory=512m --memory-swap=512m app

# CPU limits
docker run --cpus=1.5 app

# I/O limits
docker run --device-read-bps=/dev/sda:1mb app

最適化チェックリスト

サイズのチェックリスト
  • 実用上、最小のベースイメージを使用していますか?
  • マルチステージビルドを実装していますか?
  • パッケージマネージャーのキャッシュをクリーンアップしていますか?
  • 開発用依存関係を除外していますか?
  • .dockerignore を設定していますか?
ビルド速度のチェックリスト
  • コードより先に依存関係をコピーしていますか?
  • BuildKit を有効にしていますか?
  • キャッシュマウントを使用していますか?
  • 可能な場合はステージを並列化していますか?
実行時のチェックリスト
  • リソース制限を設定していますか?
  • ヘルスチェックを設定していますか?
  • 非 root ユーザーを使用していますか?
  • 可能な場合は読み取り専用ファイルシステムを使用していますか?

分析ツール

# Image size analysis
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

# Layer analysis
docker history <image> --format "{{.Size}}\t{{.CreatedBy}}"

# Deep dive analysis
dive <image>

# Build time analysis
DOCKER_BUILDKIT=1 docker build --progress=plain .

エラー処理

よくある問題
問題原因解決策
イメージが大きいマルチステージではないマルチステージを実装する
ビルドが遅いレイヤーの順序が不適切コードより先に依存関係を配置する
キャッシュが機能しないコンテキストの変更.dockerignore を使用する
実行時に OOM が発生する制限がないメモリ制限を設定する

トラブルシューティング

デバッグチェックリスト
  • BuildKit が有効ですか?(DOCKER_BUILDKIT=1)
  • キャッシュが使用されていますか?(ビルド出力を確認)
  • .dockerignore は機能していますか?(コンテキストサイズを確認)
  • レイヤーは最適化されていますか?(dive を実行)

使用方法

Skill("docker-optimization")

関連スキル

  • docker-multi-stage
  • dockerfile-basics
  • docker-production

コメント