mcpField
D
docker

docker

github.com/ulpi-ioクラウド・DevOps5122 回インストール9 週間前に更新
リポジトリ

docker について

プロジェクトのリファレンスを使い、コンテナー関連の作業を案内する Docker スキルです。安全で再現可能なビルドを支援し、作成したイメージと実行時の健全性を確認します。

主な機能

  1. 01タスクに応じたリファレンス選択
  2. 02マルチステージビルドの指針
  3. 03イメージとコンテナーのセキュリティ規則
  4. 04ビルドと実行の検証項目

活用シーン

  1. 01Dockerfile の作成や編集
  2. 02Compose サービスの設定
  3. 03ビルドやコンテナーの問題調査

インストール

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

$npx skills add https://github.com/ulpi-io/skills --skill docker

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

同梱ファイル

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

references/
build-context.md
buildkit.md
ci-cd.md
compose.md
debugging.md
dockerfile.md
health-checks.md
image-optimization.md
language-patterns.md
multi-stage.md
networking.md
registry.md
security.md
stack.md
volumes.md

詳細

このスキルは、Docker リファレンスセットを利用するためのルーティングシェルです。

譲れないルール:

  1. プロジェクトのベースイメージ、レジストリ、ビルド規約を確認するため、最初に references/stack.md を読みます。
  2. 次に、実際のタスクに必要なリファレンスだけを読み込みます。
  3. デフォルトでマルチステージビルドを使用 — 依存関係のインストール、ビルド、本番環境のステージを分けます。
  4. 本番環境では非 root ユーザーを使用 — コンテナを root として実行してはいけません。ユーザーを追加し、USER ディレクティブを設定します。
  5. イメージにシークレットを含めない — パスワードに ARG/ENV を使用せず、.env を COPY せず、ビルドレイヤーにシークレットを含めません。
  6. ベースイメージのバージョンを固定 — node:latest ではなく node:22-slim を使用します。重要なイメージにはダイジェストでの固定を使用します。
  7. .dockerignore は必須 — node_modules、.git、.env、dist、テスト成果物を除外します。
  8. ビルドではロックファイルを固定 — 再現可能なインストールのために --frozen-lockfile / --ci を使用します。

docker

入力

  • $request:Docker のタスク — Dockerfile、Compose、レジストリ、最適化、またはデバッグ対象

目標

実績のあるコンテナパターンに沿って Docker の作業を進め、イメージを小さく、安全で再現可能にし、プロジェクトのインフラ規約に従うようにします。

ステップ 0:スタックの規約を読む

必ず最初に次を読みます。

  • references/stack.md

ここでは、ベースイメージ、レジストリ、ビルドツール(Docker/BuildKit/Podman)、CI 連携、固定された規約を確認します。

成功基準:Dockerfile または Compose の設定を書く前に、プロジェクトのコンテナインフラに関する選択が明確になっていること。

ステップ 1:関連するリファレンスだけを読み込む

ルーティングテーブルを使って、参照するファイルを選びます。リファレンスツリー全体をまとめて読み込まないでください。

タスク読むファイル
ベースイメージ、レジストリ、ビルド規約、CIreferences/stack.md
Dockerfile の作成または編集references/dockerfile.md
マルチステージビルド、レイヤーの最適化、キャッシュreferences/multi-stage.md
docker-compose のサービス、ネットワーク、ボリュームreferences/compose.md
.dockerignore、ビルドコンテキストの最適化references/build-context.md
ヘルスチェック、レディネス、スタートアッププローブreferences/health-checks.md
セキュリティ:非 root、読み取り専用 FS、ケイパビリティ、スキャンreferences/security.md
イメージサイズの最適化、distroless、slim、alpinereferences/image-optimization.md
レジストリ:push、pull、タグ付け、ECR/GCR/GHCR/DockerHubreferences/registry.md
BuildKit の機能、キャッシュマウント、シークレットマウントreferences/buildkit.md
CI/CD:GitHub Actions、GitLab CI、ビルドとプッシュのパイプラインreferences/ci-cd.md
デバッグ:ログ、exec、inspect、ネットワークの問題references/debugging.md
言語別:Node.js、Python、Go、Rust、Javareferences/language-patterns.md
ボリューム、バインドマウント、tmpfs、名前付きボリュームreferences/volumes.md
ネットワーク:bridge、host、overlay、DNS、ポートマッピングreferences/networking.md

複数のタスクがある場合は、複数のファイルを読みます。各リファレンスは単独で完結しています。

成功基準:タスクに関連する Docker 規約だけが適用されていること。

ステップ 2:Docker の基本的なガードレールに従って実装する

次のルールを常に適用します。

  • マルチステージビルド:deps → build → production
  • .dockerignore で、ビルドコンテキストから不要なものをすべて除外する
  • ベースイメージのタグを固定する — 本番環境では :latest を使わない
  • 最終ステージで非 root の USER を指定する
  • 各ステージでは必要なものだけを COPY する — リポジトリ全体をコピーしない
  • 長時間稼働するすべてのサービスにヘルスチェックを設定する
  • ARG、ENV、COPY にシークレットを含めない — BuildKit の --mount=type=secret を使用する
  • RUN コマンドをまとめてレイヤー数を最小限にする — ただし、読みやすさは保つ
  • 変更頻度の低いレイヤーから高いレイヤーの順に並べる(コードより先に依存関係)

成功基準:コンテナが小さく、安全で再現可能であり、プロジェクトの規約に従っていること。

ステップ 3:ビルドを検証する

関連性が最も高い検証を実施します。

  • docker build が成功する
  • イメージサイズが言語/フレームワークに対して妥当である
  • コンテナが起動し、ヘルスチェックに合格する
  • .dockerignore で適切なファイルが除外されている(docker build --dry-run を実行するか、コンテキストサイズを確認する)
  • docker history や docker inspect にシークレットが表示されない

成功基準:イメージがビルドされて実行でき、基本的なヘルスチェックに合格します。

ガードレール

  • Docker ハンドブック全体を SKILL.md にインラインで記述しないでください。
  • references/stack.md を省略しないでください。
  • 本番用の Dockerfile では、ベースイメージに latest タグを使用しないでください。
  • 適切な .dockerignore を用意せずに COPY . . を使用しないでください。
  • コンテナを root として実行しないでください。
  • イメージに組み込まれるビルド引数や環境変数にシークレットを設定しないでください。
  • 通常のドメインスキルのため、disable-model-invocation を追加しないでください。

参照ファイルを読み込むタイミング

  • references/stack.md 常に読み込みます。

  • 続いて、references/ 以下のタスクに関連するファイルのみを読み込みます。

出力要件

次の内容を報告してください。

  1. 読み込んだ Docker の参照ファイル
  2. 選択したビルドパターン(マルチステージ、単一ステージなど)
  3. 実施した変更
  4. 実施した検証(ビルドの成功、イメージサイズ、ヘルスチェック)

コメント