关于 docker-cicd
为 Docker 自动化构建、测试和部署流水线提供指导,面向配置容器镜像 CI/CD 的团队。内容包括 GitHub Actions、Jenkins、缓存、多平台构建及相关安全注意事项。
主要功能
- 01配置 GitHub Actions Docker 流水线
- 02编写 Jenkins Docker 流水线
- 03使用缓存加速 CI 构建
- 04在 CI 中执行多平台构建
- 05说明凭据与构建密钥的安全做法
适用场景
- 01在代码发布时自动构建并推送镜像
- 02为 CI 流水线配置镜像层缓存
- 03在流水线中构建多个平台的镜像
- 04管理 CI 中的仓库凭据与构建密钥
安装
复制下面的命令,在终端中运行。
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 磁盘空间不足:多阶段构建可能会占用 CI 磁盘空间。→ 恢复方法:在构建之间执行
docker system prune -af;使用docker system df监控磁盘空间。 - 多平台模拟速度慢:在 AMD 上使用 QEMU 模拟 ARM 的速度较慢(约慢 10 倍)。→ 恢复方法:使用原生 ARM 运行器(例如 GitHub Actions ARM64 运行器),或使用 Docker Build Cloud 进行多平台构建。
边界 — 能力边界(适用与不适用场景)
| 分类 | 场景 | 说明 |
|---|---|---|
| ✅ 能做 | GitHub Actions Docker 集成 | docker/build-push-action + QEMU + multi-arch |
| ✅ 能做 | 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 中使用个人访问令牌。
📚 官方文档参考
| 文档 | 地址 |
|---|---|
| Docker 构建 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 Skills Journey
📍 你在这里:
docker-cicd— CI/CD 自动化
← 上一项:docker-build | → 下一项:docker-production
常见问题
Q1:如何快速上手此技能? A:参考上方的快速开始章节,按步骤操作即可。
Q2:遇到版本不兼容问题怎么办? A:检查依赖版本,使用 lock 文件锁定,并参考常见陷阱章节。
Q3:如何在生产环境中使用? A:参考最佳实践章节,确保配置正确,并做好监控和日志记录。
Q4:如何优化性能? A:参考性能优化相关文档,使用缓存、索引等手段。
Q5:如何贡献或反馈问题? A:在 GitHub 仓库中提交 Issue 或 Pull Request。
Q6:是否支持中文? A:支持中文文档和中文注释,详见国内适配章节。