跨云镜像迁移实战:阿里云 → 腾讯云

环境介绍

组件名称 组件配置
ACR 标准版本,开启了外网访问
TCR 标准版本,开启了内网访问,并开启Private DNS
CVM 腾讯云服务器,可以公网访问到阿里云镜像仓库,腾讯云内网互通

ACR基本配置

ACR开启外网访问

ACR首页 ---> 进入指定ACR实例 ---> 仓库管理 ---> 访问控制 ---> 公网 ---> 开启

TCR基本配置

TCR开启内网访问

TCR首页 ---> 访问控制 ---> 内网访问 ---> 接入私有网络 ---> 开启私有解析(可选,不配置服务器需要手动配置hosts文件)

迁移环境准备(image-transfer)

工具特性

  • 支持多对多镜像仓库迁移
  • 支持腾讯云 TCR 个人版(CCR)一键全量迁移至企业版
  • 支持基于 Docker Registry V2搭建的docker镜像仓库服务 (如 腾讯云TCR个人版(CCR)/TCR企业版、Docker Hub、 Quay、 阿里云镜像服务ACR、 Harbor等)
  • 支持自定义 qps 限速,避免迁移时对仓库造成过大压力
  • 同步不落盘,提升同步速度
  • 利用 pipeline 模型,提高任务执行效率
  • 增量同步, 通过对同步过的镜像 blob 信息落盘,不重复同步已同步的镜像
  • 并发同步,可以通过配置文件调整并发数
  • 自动重试失败的同步任务,可以解决大部分镜像同步中的网络抖动问题
  • 不依赖docker以及其他程序

迁移工具执行流程

下载迁移工具

bash 复制代码
wget https://github.com/tkestack/image-transfer/releases/download/v1.2.3/image-transfer-linux-amd64.tar.gz

准备认证文件、迁移规则文件

registry-secret.yaml
bash 复制代码
[root@xxxxxx]# cat registry-secret.yaml
阿里云镜像仓库地址:
  username: xxxx
  password: xxxx
腾讯云镜像仓库地址:
  username: xxx
  password: xxxx
transfer-rule.yaml
bash 复制代码
[root@xxxxxx]# cat transfer-rule.yaml
#repo级别
阿里云镜像仓库地址/ops/prometheus-config-reloader: 腾讯云镜像仓库地址/ops/prometheus-config-reloader
#tag级别
阿里云镜像仓库地址/ops/prometheus-config-reloader:xxx: 腾讯云镜像仓库地址/ops/prometheus-config-reloader:xxxx

建议在腾讯云镜像仓库上面,提前创建好仓库的ns信息

目录结构展示
bash 复制代码
[root@xxxx xx]# pwd
/data/xxxx/image-transfer-dir
[root@xxxx xx]# tree
.
├── image-transfer
├── registry-secret.yaml
└── transfer-rule.yaml

正式迁移开始

命令启动

bash 复制代码
./image-transfer --securityFile=./registry-secret.yaml --ruleFile=./transfer-rule.yaml --routines=5 --retry=3

参数解释:
--securityFile=./registry-secret.yaml:指定一个包含镜像仓库认证信息的YAML配置文件路径。
--ruleFile=./transfer-rule.yaml:指定一个定义镜像同步规则的YAML配置文件路径。
--routines=5:设置并发传输的协程/线程数量,数量的大小决定了,同步速度,过大会导致机器的负载过高,过小会导致同步速度过慢,可以根据业务自行调整。
--retry=3:设置传输失败时的自动重试次数。

迁移信息解释

bash 复制代码
2025-09-23 16:31:19.779	info	transfer/job.go:88	Get a blob sha256:27b858cdcd8ac94fb049ca1bcce5b04ad26cca31558baee0f3c5fab684d42601(5419) from xxxx/ops/netshoot:v0.13 success
2025-09-23 16:31:19.779	info	transfer/job.go:93	Putting blob to xxxxx/ops/netshoot:v0.13 ing...
2025-09-23 16:31:20.956	info	transfer/job.go:103	Put blob sha256:27b858cdcd8ac94fb049ca1bcce5b04ad26cca31558baee0f3c5fab684d42601(5419) to xxxxx/ops/netshoot:v0.13 success
2025-09-23 16:31:21.705	info	transfer/job.go:164	Put manifest to xxxx/ops/netshoot:v0.13
2025-09-23 16:31:21.705	info	transfer/job.go:167	Synchronization successfully from xxxxx/ops/netshoot:v0.13 to xxxx:v0.13
2025-09-23 16:31:21.705	info	image-transfer/run.go:271	Start to retry failed jobs...
2025-09-23 16:31:21.705	info	image-transfer/run.go:303	################# Finished, 0 transfer jobs failed, 0 normal urlPair generate failed, 0 jobs generate failed #################

日志记录了一个镜像 netshoot:v0.13 从阿里云成功同步到腾讯云的完整过程:

拉取镜像层:成功从阿里云下载了一个镜像数据块。

推送镜像层:将该数据块成功上传到腾讯云。

完成同步:最后上传镜像清单文件,标志着整个镜像同步成功。

最终状态报告

Finished, 0 transfer jobs failed, 0 normal urlPair generate failed, 0 jobs generate failed

结语

至此,镜像仓库跨云迁移已圆满完成,所有镜像均顺利同步至新环境。

相关推荐
王道长服务器 | 亚马逊云5 小时前
AWS Route 53 详解:不只是 DNS,还能做智能流量调度
服务器·网络·微服务·云原生·架构·云计算·aws
荣光波比7 小时前
Docker(一)—— Docker入门到精通:从基础概念到容器管理
运维·docker·容器·云计算
邂逅星河浪漫8 小时前
【LangChain4j+Redis】会话记忆功能实现
java·spring boot·后端·阿里云·langchain4j·会话记忆
_院长大人_9 小时前
阿里云云效将本地的maven相关文件批量推送到阿里云仓库以及使用
java·阿里云·maven
showker9 小时前
阿里云CDN加速流量消耗大原因:动态加速
阿里云·云计算
ZStack开发者社区21 小时前
全球化2.0 | 中国澳门政府部门通过ZStack替代VMware承载核心业务
云计算
程序猿费益洲1 天前
Docker 网络详解:(一)Linux 网络虚拟化技术
linux·网络·docker·容器·云计算
云宏信息1 天前
赛迪顾问《2025中国虚拟化市场研究报告》解读丨虚拟化市场迈向“多元算力架构”,国产化与AI驱动成关键变量
网络·人工智能·ai·容器·性能优化·架构·云计算
debug 小菜鸟1 天前
aws 实战小bug
云计算·bug·aws