jpskill.com
🛠️ 開発・MCP コミュニティ

docker-optimizer

Reviews Dockerfiles for best practices, security issues, and image size optimizations including multi-stage builds and layer caching. Use when working with Docker, containers, or deployment.

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o docker-optimizer.zip https://jpskill.com/download/18106.zip && unzip -o docker-optimizer.zip && rm docker-optimizer.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/18106.zip -OutFile "$d\docker-optimizer.zip"; Expand-Archive "$d\docker-optimizer.zip" -DestinationPath $d -Force; ri "$d\docker-optimizer.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して docker-optimizer.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → docker-optimizer フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Docker Optimizer

Dockerfile を分析し、パフォーマンス、セキュリティ、ベストプラクティスに基づいて最適化します。

活用場面

  • Docker またはコンテナを扱っているユーザー
  • Dockerfile の最適化が必要な場合
  • コンテナイメージが大きすぎる場合
  • ユーザーが "Docker"、"container"、"image size"、または "deployment" について言及した場合

指示

1. Dockerfile を探す

以下を検索します: Dockerfile, Dockerfile.*, *.dockerfile

2. ベストプラクティスを確認する

特定のベースイメージバージョンを使用する:

# 悪い例
FROM node:latest

# 良い例
FROM node:18-alpine

レイヤーを最小限にする:

# 悪い例
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y git

# 良い例
RUN apt-get update && \
    apt-get install -y curl git && \
    rm -rf /var/lib/apt/lists/*

変更頻度で命令を並べ替える:

# 依存関係はコードよりも変更頻度が低い
COPY package*.json ./
RUN npm install
COPY . .

.dockerignore を使用する:

node_modules
.git
.env
*.md

3. マルチステージビルド

最終的なイメージサイズを削減します:

# ビルドステージ
FROM node:18 AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# プロダクションステージ
FROM node:18-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]

4. セキュリティ上の問題

root として実行しない:

RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser

イメージ内にシークレットを含めない:

# 悪い例: ハードコードされたシークレット
ENV API_KEY=secret123

# 良い例: ビルド引数またはランタイム環境変数を使用する
ARG BUILD_ENV
ENV NODE_ENV=${BUILD_ENV}

脆弱性をスキャンする:

docker scan image:tag
trivy image image:tag

5. サイズの最適化

Alpine イメージを使用する:

  • node:18-alpine vs node:18 (900MB → 170MB)
  • python:3.11-alpine vs python:3.11 (900MB → 50MB)

不要なファイルを削除する:

RUN npm install --production && \
    npm cache clean --force

特定の COPY を使用する:

# 悪い例: すべてをコピーする
COPY . .

# 良い例: 必要なものだけをコピーする
COPY package*.json ./
COPY src ./src

6. キャッシュ戦略

レイヤーキャッシュの最適化:

# 最初に依存関係をインストールする (package.json が変更されなければキャッシュされる)
COPY package*.json ./
RUN npm install

# ソースをコピーする (変更頻度が高い)
COPY . .
RUN npm run build

7. ヘルスチェック

HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD node healthcheck.js

8. 最適化された Dockerfile を生成する

以下を含む改善されたバージョンを提供します:

  • マルチステージビルド
  • 適切なベースイメージ
  • セキュリティの改善
  • レイヤーの最適化
  • ビルドキャッシュ
  • .dockerignore ファイル

9. ビルドコマンド

効率的なビルド:

# BuildKit を使用する
DOCKER_BUILDKIT=1 docker build -t app:latest .

# レジストリからのキャッシュでビルドする
docker build --cache-from myregistry/app:latest -t app:latest .

10. Dockerfile チェックリスト

  • [ ] 特定のベースイメージタグ (latest ではない)
  • [ ] 該当する場合はマルチステージビルド
  • [ ] root ではないユーザー
  • [ ] 最小限のレイヤー (RUN コマンドの結合)
  • [ ] .dockerignore が存在する
  • [ ] イメージ内にシークレットがない
  • [ ] キャッシュのための適切なレイヤー順序
  • [ ] Alpine または slim バリアントを使用
  • [ ] 同じ RUN レイヤーでクリーンアップ
  • [ ] HEALTHCHECK が定義されている

セキュリティのベストプラクティス

  • イメージを定期的にスキャンする
  • 公式のベースイメージを使用する
  • ベースイメージを最新の状態に保つ
  • 攻撃対象領域を最小限にする (パッケージ数を減らす)
  • root ではないユーザーとして実行する
  • 可能な場合は読み取り専用ファイルシステムを使用する

サポートファイル

  • templates/Dockerfile.optimized: 最適化されたマルチステージ Dockerfile の例
  • templates/.dockerignore: 一般的な .dockerignore パターン
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Docker Optimizer

Analyzes and optimizes Dockerfiles for performance, security, and best practices.

When to Use

  • User working with Docker or containers
  • Dockerfile optimization needed
  • Container image too large
  • User mentions "Docker", "container", "image size", or "deployment"

Instructions

1. Find Dockerfiles

Search for: Dockerfile, Dockerfile.*, *.dockerfile

2. Check Best Practices

Use specific base image versions:

# Bad
FROM node:latest

# Good
FROM node:18-alpine

Minimize layers:

# Bad
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y git

# Good
RUN apt-get update && \
    apt-get install -y curl git && \
    rm -rf /var/lib/apt/lists/*

Order instructions by change frequency:

# Dependencies change less than code
COPY package*.json ./
RUN npm install
COPY . .

Use .dockerignore:

node_modules
.git
.env
*.md

3. Multi-Stage Builds

Reduce final image size:

# Build stage
FROM node:18 AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# Production stage
FROM node:18-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]

4. Security Issues

Don't run as root:

RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser

No secrets in image:

# Bad: Hardcoded secret
ENV API_KEY=secret123

# Good: Use build args or runtime env
ARG BUILD_ENV
ENV NODE_ENV=${BUILD_ENV}

Scan for vulnerabilities:

docker scan image:tag
trivy image image:tag

5. Size Optimization

Use Alpine images:

  • node:18-alpine vs node:18 (900MB → 170MB)
  • python:3.11-alpine vs python:3.11 (900MB → 50MB)

Remove unnecessary files:

RUN npm install --production && \
    npm cache clean --force

Use specific COPY:

# Bad: Copies everything
COPY . .

# Good: Copy only what's needed
COPY package*.json ./
COPY src ./src

6. Caching Strategy

Layer caching optimization:

# Install dependencies first (cached if package.json unchanged)
COPY package*.json ./
RUN npm install

# Copy source (changes more frequently)
COPY . .
RUN npm run build

7. Health Checks

HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD node healthcheck.js

8. Generate Optimized Dockerfile

Provide improved version with:

  • Multi-stage build
  • Appropriate base image
  • Security improvements
  • Layer optimization
  • Build caching
  • .dockerignore file

9. Build Commands

Efficient build:

# Use BuildKit
DOCKER_BUILDKIT=1 docker build -t app:latest .

# Build with cache from registry
docker build --cache-from myregistry/app:latest -t app:latest .

10. Dockerfile Checklist

  • [ ] Specific base image tag (not latest)
  • [ ] Multi-stage build if applicable
  • [ ] Non-root user
  • [ ] Minimal layers (combined RUN commands)
  • [ ] .dockerignore present
  • [ ] No secrets in image
  • [ ] Proper layer ordering for caching
  • [ ] Alpine or slim variant used
  • [ ] Cleanup in same RUN layer
  • [ ] HEALTHCHECK defined

Security Best Practices

  • Scan images regularly
  • Use official base images
  • Keep base images updated
  • Minimize attack surface (fewer packages)
  • Run as non-root user
  • Use read-only filesystem where possible

Supporting Files

  • templates/Dockerfile.optimized: Optimized multi-stage Dockerfile example
  • templates/.dockerignore: Common .dockerignore patterns