这是一个用于将外部 Docker 镜像同步到 CNB 仓库的自动化工具。
项目地址:https://cnb.cool/xqitw/tools/docker
功能特性
- 🔄 支持将任意 Docker Hub 或其他仓库的镜像同步到 CNB 私有仓库
- 🚀 通过 Web 界面一键触发同步操作
- ✅ 自动验证环境变量和镜像格式
- 📝 详细的日志输出和错误处理
- 🏷️ 智能处理镜像标签(支持默认 latest 标签)
使用方法
1. 通过 Web 界面同步
- 在项目页面找到 “Docker镜像同步” 按钮
- 点击按钮并输入要同步的镜像地址(如:
nginx:1.21或docker.io/library/nginx:latest) - 点击确认开始同步
2. 支持的镜像格式
nginx:1.21- 同步 nginx 镜像的 1.21 标签docker.io/library/nginx:latest- 完整的镜像地址redis- 同步 redis 镜像的 latest 标签(默认)
工作原理
工具执行以下步骤:
- 环境验证 - 检查必需的环境变量是否设置
- 镜像解析 - 提取镜像名称和版本标签
- 拉取镜像 - 从源仓库拉取指定镜像
- 重新标记 - 将镜像标记为 CNB 仓库格式
- 推送镜像 - 将标记后的镜像推送到 CNB 仓库
环境变量
工具依赖以下环境变量(由 CNB 平台自动提供):
DOCKER_FULL_IMAGE- 用户输入的要同步的镜像地址CNB_DOCKER_REGISTRY- CNB Docker 仓库地址CNB_REPO_SLUG_LOWERCASE- 项目标识符
输出示例
1 | 开始同步 Docker 镜像: nginx:1.21 |
错误处理
工具包含完善的错误处理机制:
- 环境变量未设置时会提示具体缺失的变量
- Docker 命令执行失败时会显示详细的错误信息
- 每个步骤都有独立的错误检查和退出机制
注意事项
- 确保目标镜像在源仓库中存在
- 需要有足够的权限访问 CNB Docker 仓库
- 大型镜像同步可能需要较长时间
- 建议在非高峰时段进行大量镜像同步
配置文件
.cnb.yml- 主要的 CI/CD 配置文件,定义同步流程.cnb/web_trigger.yml- Web 触发器配置,定义用户界面
许可证
本项目采用 MIT 许可证。