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.
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
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
$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. 下の青いボタンを押して
docker-optimizer.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
docker-optimizerフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
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-alpinevsnode:18(900MB → 170MB)python:3.11-alpinevspython: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-alpinevsnode:18(900MB → 170MB)python:3.11-alpinevspython: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 exampletemplates/.dockerignore: Common .dockerignore patterns