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

环境介绍

组件名称 组件配置
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

结语

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

相关推荐
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Database_Cool_4 天前
什么是数据仓库物化视图?AnalyticDB MySQL 实时物化视图能力解析
人工智能·mysql·阿里云
Database_Cool_4 天前
大规模数据分析降本指南:AnalyticDB Serverless 弹性架构实战
数据仓库·阿里云·架构·数据分析·serverless
tiancaijiben4 天前
阿里云Kubernetes集群托管完全指南:从创建到生产级运维
云计算
我是小bā吖4 天前
Claude Code 模型接入阿里云 AI 网关并统计不同使用者的模型用量
网络·人工智能·阿里云
翼龙云_cloud4 天前
阿里云国际代理商:如何使用RDS MySQL 构建网站数据库?
数据库·mysql·阿里云
互联网推荐官4 天前
上海软件定制开发公司推荐:从PaaS工程化路径看D-coding的技术取舍
云原生·云计算·paas·软件开发·开发经验·上海
sbjdhjd4 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
wcy100864 天前
为 CentOS 7.6 (7.6.1810) 配置阿里云 Vault 源
linux·阿里云·centos
Inhand陈工4 天前
污水泵站PLC数据上云实战:西门子PLC + 映翰通IG502 + DM平台全流程
人工智能·物联网·网络安全·阿里云·信息与通信·iot