Crane 是腾讯开源的轻量级 Docker 镜像仓库管理工具,专注镜像复制、同步、扫描与清理,支持多 Registry 间迁移与灾备,纯命令行驱动,兼容主流仓库,无外部依赖。

Crane 是一个由腾讯开源的轻量级 Docker 镜像仓库管理工具,专注于镜像复制(copy)、同步(sync)、扫描(scan)和清理(prune),尤其适合在多 Registry 间做镜像迁移、灾备同步或私有仓库镜像分发。它不依赖外部数据库或服务,纯命令行驱动,支持 OCI 和 Docker v2 协议,对 Harbor、Docker Hub、Quay、阿里云 ACR、腾讯云 TCR 等主流 Registry 兼容良好。
核心能力:镜像复制与跨仓库同步
Crane 的 copy 命令支持单镜像、带标签过滤、按 manifest 类型(如 multi-arch)或 digest 精确复制;sync 命令则面向批量场景,可基于 YAML 配置文件定义源/目标 Registry、命名空间、镜像名、标签规则(如 latest、正则匹配、时间范围等),自动比对差异并增量同步。
- 支持断点续传:失败后可重试,已成功层跳过上传
- 保留原始 digest 和 manifest 结构,确保内容一致性
- 可配置并发数(
--concurrency)和限速(--rate-limit),避免压垮源仓库 - 同步时自动处理 namespace 映射(如将
library/nginx重写为prod/nginx)
快速上手:一条命令完成镜像迁移
例如,把 Docker Hub 上的 nginx:alpine 复制到本地 Harbor:
crane copy docker.io/library/nginx:alpine harbor.example.com/project/nginx:alpine
若需同步整个 library 下所有带 1.25 标签的镜像,可编写 sync.yaml:
src: docker.io dst: harbor.example.com rules: - project: library repo: nginx tags: ["1.25.*"] - project: library repo: redis tags: ["7.*"]
执行:crane sync -f sync.yaml
安全与权限控制要点
Crane 默认读取 ~/.docker/config.json 中的认证信息,也支持显式传入用户名密码或 token:
- 对私有 Registry,建议使用 robot account 或短期 token,避免硬编码凭证
- 启用 TLS 验证(默认开启),自签名证书需通过
--insecure-registries显式声明 - 敏感操作(如 prune)默认禁用 dry-run 模式,必须加
--dry-run=false才真正执行 - 支持镜像签名验证(cosign),配合
--with-signature可同步签名数据
与其他工具对比:为什么选 Crane?
相比 skopeo(功能全面但配置复杂)、regsync(专注定时同步但扩展性弱)、oras(侧重 OCI artifact 而非镜像本身),Crane 的优势在于:
- 专为镜像同步设计,命令语义清晰(copy/sync/prune/scan),无学习冗余
- 内置 registry 发现机制(如自动识别 Harbor 项目结构),适配企业级仓库特性
- 二进制单文件分发,无运行时依赖,适合集成进 CI/CD 流水线或运维脚本
- 活跃维护,v0.20+ 版本已支持 Registry V2 API 全特性及镜像层去重优化

















