docker-cicd について
Docker イメージのビルド、テスト、デプロイを自動化するチーム向けのガイドです。GitHub Actions、Jenkins、キャッシュ、マルチプラットフォームビルドと CI の安全対策を扱います。
主な機能
- 01GitHub Actions の Docker ワークフロー設定
- 02Jenkins の Docker パイプライン作成
- 03キャッシュによる CI ビルドの高速化
- 04CI でのマルチプラットフォームビルド
- 05認証情報とビルドシークレットの安全な管理
活用シーン
- 01コード公開時のイメージ構築とプッシュ
- 02CI でのイメージレイヤーキャッシュ設定
- 03パイプラインで複数プラットフォーム向けに構築
- 04CI のレジストリ認証情報とビルドシークレット管理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ full-stack-skills/ docker-skills --skill docker-cicdインストール後、Claude Code で/docker-cicdを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlexamples/01-github-actions.md02-jenkins-pipeline.md03-multi-arch-build.mdreferences/01-buildx-multi-platform.md02-build-cloud.md詳細
Docker CI/CD — 継続的インテグレーションと継続的デプロイ
Docker を自動ビルド、テスト、デプロイのパイプラインに統合するためのガイダンスです。
使用するタイミング
ユーザーが次の内容に言及した場合は、必ずこのスキルを使用してください:
- 「docker CI」、「docker CD」、「CI/CD pipeline」
- 「GitHub Actions docker」、「Jenkins docker」
- 「buildx」、「multi-platform build」、「マルチプラットフォームビルド」
- 「Docker Build Cloud」
- 「イメージビルドパイプライン」
GitHub Actions
ビルドとプッシュのパイプライン
name: Build and Push
on:
push:
tags: ['v*']
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: user/app:${{ github.ref_name }},user/app:latest
cache-from: type=gha
cache-to: type=gha,mode=max
マルチプラットフォームビルド
- name: Build and push multi-platform
uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm64
push: true
tags: user/app:latest
Jenkins パイプライン
pipeline {
agent any
environment {
DOCKER_IMAGE = 'myapp'
DOCKER_TAG = "${env.BUILD_NUMBER}"
}
stages {
stage('Build') {
steps {
sh "docker build -t ${DOCKER_IMAGE}:${DOCKER_TAG} ."
}
}
stage('Test') {
steps {
sh "docker run --rm ${DOCKER_IMAGE}:${DOCKER_TAG} npm test"
}
}
stage('Push') {
steps {
withDockerRegistry([credentialsId: 'docker-hub']) {
sh "docker push ${DOCKER_IMAGE}:${DOCKER_TAG}"
}
}
}
}
}
CI でのレイヤーキャッシュ
# Pull previous image for layer cache
docker pull $IMAGE:latest || true
docker build \
--cache-from $IMAGE:latest \
--build-arg BUILDKIT_INLINE_CACHE=1 \
-t $IMAGE:$TAG .
ワークフロー — 推奨 CI/CD フロー
ステップ 1:CI 環境を設定:docker/login-action + docker/setup-buildx-action
ステップ 2:イメージをビルド:docker/build-push-action + レジストリキャッシュによる高速化
ステップ 3:セキュリティスキャン:docker/scout-action で CVE をスキャンし、ポリシーゲートを適用
ステップ 4:リポジトリにプッシュ:複数のタグ(semver + sha + latest)を付けて ghcr.io/Docker Hub にプッシュ
ステップ 5:デプロイ:ArgoCD/Flux でリポジトリの変更を監視し、自動デプロイ
よくある落とし穴
- CI キャッシュのミス:
--cache-fromを指定しないと、CI ビルドのたびに最初からビルドされます。→ 対処方法:ビルドの前にdocker pull myapp:latest || trueを実行します。GitHub Actions では--cache-from type=ghaを使用します。 - CI ログ内のビルドシークレット:シークレットを
echoしたり、出力したりしないでください。buildx の--secretまたは CI のシークレットマスキングを使用します。→ 対処方法:docker buildx build --secret id=npmrc,src=$HOME/.npmrcを実行し、CI ログでシークレットがマスキングされていることを確認します。 - CI のディスク容量:マルチステージビルドは CI のディスク容量を消費することがあります。→ 対処方法:ビルドの間に
docker system prune -afを実行し、docker system dfで監視します。 - マルチプラットフォームエミュレーションの遅さ:AMD 上での ARM 向け QEMU エミュレーションは低速です(約 10 倍)。→ 対処方法:ネイティブ ARM ランナー(GitHub Actions ARM64 ランナーなど)または Docker Build Cloud を使用して、マルチプラットフォームビルドを行います。
境界 — 対応範囲(適用できる場面とできない場面)
| 分類 | 場面 | 説明 |
|---|---|---|
| ✅ 対応可能 | GitHub Actions と Docker の統合 | docker/build-push-action + QEMU + マルチアーキテクチャ |
| ✅ 対応可能 | Jenkins Pipeline と Docker | Docker agent + build/push/scan |
| ✅ 対応可能 | マルチプラットフォーム CI ビルド | buildx + QEMU + マルチアーキテクチャ manifest |
| ⚠️ 条件付き | Docker Build Cloud による高速化 | 有料サブスクリプションが必要です |
| ⚠️ 条件付き | GitHub/Jenkins 以外の CI | 汎用パターンを参考に適用してください |
| ❌ 対象外 | Dockerfile の作成 | docker-dockerfile を使用してください |
| ❌ 対象外 | K8s CD(ArgoCD/Flux) | K8s デプロイスキル |
| ❌ 対象外 | CI プラットフォームの構築(Jenkins のインストール) | DevOps インフラストラクチャ |
使用しない場合
| ❌ 使用しない | ✅ 代わりに使用 |
|---|---|
| Dockerfile の作成 | docker-build |
| セキュリティスキャン | docker-security / docker-scout |
| 本番環境へのデプロイ | docker-production |
| レジストリ管理 | docker-hub |
セキュリティと安定性
- CI 設定にレジストリ認証情報をハードコードしないでください。CI のシークレットマネージャー(GitHub Secrets、Jenkins Credentials)を使用してください。
- 長期間有効な認証情報の代わりに、クラウドレジストリの認証には OIDC(OpenID Connect)を使用してください。
- 本番レジストリにプッシュする前に、Docker Scout でイメージをスキャンしてください。
- 監査証跡を残すため、イメージに SHA ダイジェストをタグ付けしてください:
image:sha-${GITHUB_SHA::7}。 - レジストリトークンは定期的にローテーションしてください。CI で個人用アクセストークンを使用しないでください。
📚 公式ドキュメントの参考資料
| ドキュメント | URL |
|---|---|
| Docker Build CI | https://docs.docker.com/build/ci/ |
| Docker Build Cloud | https://docs.docker.com/build-cloud/ |
| GitHub Actions と Docker | https://docs.docker.com/build/ci/github-actions/ |
| Docker Scout CI | https://docs.docker.com/scout/policy/ci/ |
| Buildx CI 統合 | https://docs.docker.com/build/ci/github-actions/build-push-action/ |
🧭 Docker スキルの進め方
📍 現在の位置:
docker-cicd— CI/CD 自動化
← 前へ:docker-build | → 次へ:docker-production
FAQ
Q1:このスキルをすぐに使い始めるには? A:上記のクイックスタートの章を参考に、手順に沿って操作してください。
Q2:バージョンの互換性に関する問題が発生した場合は? A:依存関係のバージョンを確認し、lock ファイルで固定してください。よくある落とし穴の章も参考にしてください。
Q3:本番環境で使用するには? A:ベストプラクティスの章を参考に、設定が正しいことを確認し、監視とログ記録を行ってください。
Q4:パフォーマンスを最適化するには? A:パフォーマンス最適化に関するドキュメントを参考に、キャッシュやインデックスなどを活用してください。
Q5:貢献や問題の報告をするには? A:GitHub リポジトリで Issue または Pull Request を作成してください。
Q6:中国語に対応していますか? A:中国語のドキュメントとコメントに対応しています。国内向け対応の章をご覧ください。