使用 GitHub Actions 自动同步 Docker 镜像到 CNB

镜像 docker tag 同步 .github
发布于 2026-06-12
82

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

扫码阅读
手机扫码阅读

文章主旨:介绍如何通过 GitHub Actions 与 skopeo 工具,将 Docker Hub 上的镜像自动化同步至 CNB(腾讯云原生构建平台),以提升镜像的访问速度与稳定性。

关键要点:

  • 通过 .github/images.yml 维护镜像列表,支持灵活配置。
  • 使用 GitHub Actions 手动(选择镜像和版本)或自动(推送镜像列表变更)触发同步。
  • 核心同步命令依赖 skopeo copy --all 实现多平台镜像复制,需配置 DOCKERHUB 与 CNB 凭据。
  • 同步完成后用户可通过 docker pull docker.cnb.cool/lufei/docker/... 拉取镜像。
  • 整个过程自动化、可复用、支持选择性构建与定制版本。

内容结构:

  1. 背景:Docker Hub 网络不稳定,之前用 CODING 同步但即将停服,故改用 CNB(同样腾讯出品,支持云原生构建)。
  2. 同步方案概览:通过 images.yml 维护列表,手动/自动触发 GitHub Actions,使用 skopeo 同步,支持选择镜像和 tag。
  3. GitHub Actions 工作流详解:提供完整 YAML 配置(docker-proxy.yml),包括触发条件(workflow_dispatch + push)、任务流程(checkout → 读取列表 → 逐镜像 skopeo copy),并输出通知链接。
  4. 触发机制:支持手动(选择镜像名和版本)与自动(.github/images.yml 更新时同步所有)。
  5. 镜像清单文件:示例 images: 条目包括 image、tag、name。
  6. 核心同步逻辑skopeo copy --all 保证多架构同步,凭据通过 GitHub Secrets 配置。同步后输出可拉取地址。
  7. 如何使用:手动触发步骤(选择镜像留空为同步所有,可指定 tag)与自动触发条件。提供拉取示例和网页查看方式。
  8. 安全配置:列出所需三个 Secrets:DOCKERHUB_USERNAME、DOCKERHUB_TOKEN、CNB_DOCKER_TOKEN,并说明 CNB 仓库默认即支持 Docker 制品。
  9. 总结:通过 GitHub Actions + skopeo + CNB 构建了可复用、自动化的多镜像同步工具链,提升镜像可用性与部署效率。

文章总结:本文提供了一套完整的、可复用的自动化镜像同步方案,从背景、配置到使用细节均有说明,适合需要将海外镜像同步至国内加速服务的开发者参考。

鲁飞