logo
0
0
Login
chore(README): 添加star和fork徽章到README文档

Docker 镜像同步工具

badge badge badge badge

这是一个用于将外部 Docker 镜像同步到 CNB 仓库的自动化工具。

功能特性

  • 🔄 支持将任意 Docker Hub 或其他仓库的镜像同步到 CNB 私有仓库
  • 🚀 通过 Web 界面一键触发同步操作
  • ✅ 自动验证环境变量和镜像格式
  • 📝 详细的日志输出和错误处理
  • 🏷️ 智能处理镜像标签(支持默认 latest 标签)

使用方法

1. 通过 Web 界面同步

  1. 在项目页面找到 "Docker镜像同步" 按钮
  2. 点击按钮并输入要同步的镜像地址(如:nginx:1.21docker.io/library/nginx:latest
  3. 点击确认开始同步

2. 支持的镜像格式

  • nginx:1.21 - 同步 nginx 镜像的 1.21 标签
  • docker.io/library/nginx:latest - 完整的镜像地址
  • redis - 同步 redis 镜像的 latest 标签(默认)

工作原理

工具执行以下步骤:

  1. 环境验证 - 检查必需的环境变量是否设置
  2. 镜像解析 - 提取镜像名称和版本标签
  3. 拉取镜像 - 从源仓库拉取指定镜像
  4. 重新标记 - 将镜像标记为 CNB 仓库格式
  5. 推送镜像 - 将标记后的镜像推送到 CNB 仓库

环境变量

工具依赖以下环境变量(由 CNB 平台自动提供):

  • DOCKER_FULL_IMAGE - 用户输入的要同步的镜像地址
  • CNB_DOCKER_REGISTRY - CNB Docker 仓库地址
  • CNB_REPO_SLUG_LOWERCASE - 项目标识符

输出示例

开始同步 Docker 镜像: nginx:1.21 镜像名称: nginx 镜像版本: 1.21 目标镜像: registry.cnb.io/your-project/nginx:1.21 正在拉取源镜像... 正在标记镜像... 正在推送镜像... Docker 镜像同步完成!

错误处理

工具包含完善的错误处理机制:

  • 环境变量未设置时会提示具体缺失的变量
  • Docker 命令执行失败时会显示详细的错误信息
  • 每个步骤都有独立的错误检查和退出机制

注意事项

  • 确保目标镜像在源仓库中存在
  • 需要有足够的权限访问 CNB Docker 仓库
  • 大型镜像同步可能需要较长时间
  • 建议在非高峰时段进行大量镜像同步

配置文件

  • .cnb.yml - 主要的 CI/CD 配置文件,定义同步流程
  • .cnb/web_trigger.yml - Web 触发器配置,定义用户界面

许可证

本项目采用 MIT 许可证。

About

一个用于将外部 Docker 镜像同步到 CNB 仓库的自动化工具