docker について
プロジェクトのリファレンスを使い、コンテナー関連の作業を案内する Docker スキルです。安全で再現可能なビルドを支援し、作成したイメージと実行時の健全性を確認します。
主な機能
- 01タスクに応じたリファレンス選択
- 02マルチステージビルドの指針
- 03イメージとコンテナーのセキュリティ規則
- 04ビルドと実行の検証項目
活用シーン
- 01Dockerfile の作成や編集
- 02Compose サービスの設定
- 03ビルドやコンテナーの問題調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ulpi-io/ skills --skill dockerインストール後、Claude Code で/dockerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/build-context.mdbuildkit.mdci-cd.mdcompose.mddebugging.mddockerfile.mdhealth-checks.mdimage-optimization.mdlanguage-patterns.mdmulti-stage.mdnetworking.mdregistry.mdsecurity.mdstack.mdvolumes.md詳細
譲れないルール:
- プロジェクトのベースイメージ、レジストリ、ビルド規約を確認するため、最初に
references/stack.mdを読みます。 - 次に、実際のタスクに必要なリファレンスだけを読み込みます。
- デフォルトでマルチステージビルドを使用 — 依存関係のインストール、ビルド、本番環境のステージを分けます。
- 本番環境では非 root ユーザーを使用 — コンテナを root として実行してはいけません。ユーザーを追加し、
USERディレクティブを設定します。 - イメージにシークレットを含めない — パスワードに
ARG/ENVを使用せず、.envをCOPYせず、ビルドレイヤーにシークレットを含めません。 - ベースイメージのバージョンを固定 —
node:latestではなくnode:22-slimを使用します。重要なイメージにはダイジェストでの固定を使用します。 .dockerignoreは必須 —node_modules、.git、.env、dist、テスト成果物を除外します。- ビルドではロックファイルを固定 — 再現可能なインストールのために
--frozen-lockfile/--ciを使用します。
docker
入力
$request:Docker のタスク — Dockerfile、Compose、レジストリ、最適化、またはデバッグ対象
目標
実績のあるコンテナパターンに沿って Docker の作業を進め、イメージを小さく、安全で再現可能にし、プロジェクトのインフラ規約に従うようにします。
ステップ 0:スタックの規約を読む
必ず最初に次を読みます。
references/stack.md
ここでは、ベースイメージ、レジストリ、ビルドツール(Docker/BuildKit/Podman)、CI 連携、固定された規約を確認します。
成功基準:Dockerfile または Compose の設定を書く前に、プロジェクトのコンテナインフラに関する選択が明確になっていること。
ステップ 1:関連するリファレンスだけを読み込む
ルーティングテーブルを使って、参照するファイルを選びます。リファレンスツリー全体をまとめて読み込まないでください。
| タスク | 読むファイル |
|---|---|
| ベースイメージ、レジストリ、ビルド規約、CI | references/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、alpine | references/image-optimization.md |
| レジストリ:push、pull、タグ付け、ECR/GCR/GHCR/DockerHub | references/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、Java | references/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/以下のタスクに関連するファイルのみを読み込みます。
出力要件
次の内容を報告してください。
- 読み込んだ Docker の参照ファイル
- 選択したビルドパターン(マルチステージ、単一ステージなど)
- 実施した変更
- 実施した検証(ビルドの成功、イメージサイズ、ヘルスチェック)