containerization-best-practices
Dockerやコンテナのセキュリティ、パフォーマンス、ネットワーク、ボリューム管理など、コンテナ化戦略とDockerの最適化に関するベストプラクティスを提供するSkillです。
📜 元の英語説明(参考)
Container and Docker best practices. Use when user asks to "optimize Docker", "Docker best practices", "container security", "image optimization", "layer caching", "multi-stage builds", "container networking", "volume management", "Docker performance", or mentions containerization strategies and Docker optimization.
🇯🇵 日本人クリエイター向け解説
Dockerやコンテナのセキュリティ、パフォーマンス、ネットワーク、ボリューム管理など、コンテナ化戦略とDockerの最適化に関するベストプラクティスを提供するSkillです。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o containerization-best-practices.zip https://jpskill.com/download/6073.zip && unzip -o containerization-best-practices.zip && rm containerization-best-practices.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/6073.zip -OutFile "$d\containerization-best-practices.zip"; Expand-Archive "$d\containerization-best-practices.zip" -DestinationPath $d -Force; ri "$d\containerization-best-practices.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
containerization-best-practices.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
containerization-best-practicesフォルダができる - 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-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
コンテナ化と Docker のベストプラクティス
効率的で安全、かつ保守しやすいコンテナを構築するための、高度な Docker とコンテナ化戦略です。
Dockerfile のベストプラクティス
マルチステージビルド
# ビルドステージ
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# ランタイムステージ
FROM node:18-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]
レイヤーキャッシュの最適化
# 悪い例 - コード変更のたびに再ビルドされる
FROM node:18
COPY . .
RUN npm install
# 良い例 - レイヤーキャッシュを活用する
FROM node:18
COPY package*.json ./
RUN npm install
COPY . .
最小限のベースイメージ
# 大きい例 ~330MB
FROM ubuntu:22.04
# より良い例 ~100MB
FROM node:18
# 最良の例 ~50MB (Alpine)
FROM node:18-alpine
イメージサイズの最適化
- alpine バリアント (-alpine, -slim) を使用します。
- ビルド依存関係を除外するためにマルチステージビルドを使用します。
- .dockerignore ファイルでファイルを除外します。
- パッケージマネージャーのキャッシュを削除します。
- 特定のバージョン (latest ではない) を使用します。
.dockerignore の例
node_modules
npm-debug.log
.git
.gitignore
README.md
.env
.DS_Store
coverage
tests
セキュリティのベストプラクティス
非 root ユーザーとして実行
RUN useradd -m -u 1000 appuser
USER appuser
イメージにシークレットを含めない
# 悪い例 - イメージにシークレットが含まれている
RUN npm install --password=$DB_PASSWORD
# 良い例 - ビルド引数または実行時の環境変数を使用する
ARG NPM_TOKEN
RUN npm install --no-optional
イメージをスキャンする
docker scan myapp:latest
trivy image myapp:latest
ネットワークセキュリティ
- 特定のベースイメージ (ubuntu ではない) を使用します。
- イメージを常に最新の状態に保ちます。
- 不要なツールを削除します。
- 可能な場合は読み取り専用ファイルシステムを使用します。
コンテナネットワーキング
ブリッジネットワーク
docker network create myapp-net
docker run --network myapp-net myapp
環境変数
ENV NODE_ENV=production
ENV LOG_LEVEL=info
ボリューム管理
名前付きボリューム
docker volume create appdata
docker run -v appdata:/data myapp
バインドマウント
docker run -v /host/path:/container/path myapp
パフォーマンスの最適化
- ベースイメージ: 最小限のベースイメージを使用します。
- レイヤーキャッシュ: コマンドを更新頻度順に並べます。
- 圧縮: より良いキャッシュのために BuildKit を使用します。
- 並行ビルド: レイヤーを並行してビルドします。
BuildKit の有効化
export DOCKER_BUILDKIT=1
docker build -t myapp .
Docker Compose のベストプラクティス
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
environment:
- NODE_ENV=production
volumes:
- appdata:/data
networks:
- appnet
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 30s
timeout: 10s
postgres:
image: postgres:15-alpine
environment:
- POSTGRES_PASSWORD=secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
appdata:
pgdata:
networks:
appnet:
イメージレジストリのベストプラクティス
- イメージに意味のあるタグを付けます (バージョン、git-sha、latest)。
- プロプライエタリなコードにはプライベートレジストリを使用します。
- 古いイメージを定期的にクリーンアップします。
- イメージの署名と検証を実装します。
意味のあるタグ付け
docker tag myapp:latest myapp:1.0.0
docker tag myapp:latest myapp:2024-02-07
docker tag myapp:latest myapp:${GIT_SHA}
コンテナのデバッグ
# 実行中のコンテナでコマンドを実行する
docker exec -it container-id bash
# ログを表示する
docker logs container-id
docker logs -f container-id
# リソース使用量を検査する
docker stats
# イメージレイヤーをデバッグする
docker history myapp:latest
参考文献
- Docker Documentation
- Google Container Best Practices
- Kubernetes Documentation
- 12-Factor App Methodology
- Container Image Spec (OCI)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Containerization & Docker Best Practices
Advanced Docker and containerization strategies for building efficient, secure, and maintainable containers.
Dockerfile Best Practices
Multi-Stage Build
# Build stage
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Runtime stage
FROM node:18-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]
Layer Caching Optimization
# Bad - rebuilds on every code change
FROM node:18
COPY . .
RUN npm install
# Good - leverages layer caching
FROM node:18
COPY package*.json ./
RUN npm install
COPY . .
Minimal Base Images
# Large ~330MB
FROM ubuntu:22.04
# Better ~100MB
FROM node:18
# Best ~50MB (Alpine)
FROM node:18-alpine
Image Size Optimization
- Use alpine variants (-alpine, -slim)
- Multi-stage builds to exclude build dependencies
- .dockerignore file to exclude files
- Remove package manager caches
- Use specific versions (not latest)
Example .dockerignore
node_modules
npm-debug.log
.git
.gitignore
README.md
.env
.DS_Store
coverage
tests
Security Best Practices
Run as Non-Root
RUN useradd -m -u 1000 appuser
USER appuser
No Secrets in Images
# Bad - secrets in image
RUN npm install --password=$DB_PASSWORD
# Good - use build args or env at runtime
ARG NPM_TOKEN
RUN npm install --no-optional
Scan Images
docker scan myapp:latest
trivy image myapp:latest
Network Security
- Use specific base images (not ubuntu)
- Keep images updated
- Remove unnecessary tools
- Use read-only filesystems where possible
Container Networking
Bridge Networks
docker network create myapp-net
docker run --network myapp-net myapp
Environment Variables
ENV NODE_ENV=production
ENV LOG_LEVEL=info
Volume Management
Named Volumes
docker volume create appdata
docker run -v appdata:/data myapp
Bind Mounts
docker run -v /host/path:/container/path myapp
Performance Optimization
- Base Image: Use minimal base images
- Layer Caching: Order commands by change frequency
- Compression: Use BuildKit for better caching
- Concurrent Builds: Parallel layer building
Enable BuildKit
export DOCKER_BUILDKIT=1
docker build -t myapp .
Docker Compose Best Practices
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
environment:
- NODE_ENV=production
volumes:
- appdata:/data
networks:
- appnet
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 30s
timeout: 10s
postgres:
image: postgres:15-alpine
environment:
- POSTGRES_PASSWORD=secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
appdata:
pgdata:
networks:
appnet:
Image Registry Best Practices
- Tag images semantically (version, git-sha, latest)
- Use private registries for proprietary code
- Regular cleanup of old images
- Implement image signing and verification
Semantic Tagging
docker tag myapp:latest myapp:1.0.0
docker tag myapp:latest myapp:2024-02-07
docker tag myapp:latest myapp:${GIT_SHA}
Debugging Containers
# Execute command in running container
docker exec -it container-id bash
# View logs
docker logs container-id
docker logs -f container-id
# Inspect resource usage
docker stats
# Debug image layers
docker history myapp:latest
References
- Docker Documentation
- Google Container Best Practices
- Kubernetes Documentation
- 12-Factor App Methodology
- Container Image Spec (OCI)