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

环境介绍

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

结语

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

相关推荐
翼龙云_cloud13 小时前
阿里云渠道商:如何使用弹性伸缩来实现计算资源的弹性配置?
服务器·阿里云·云计算
落笔画忧愁e17 小时前
实测:利用腾讯云锐驰型 200M 带宽,搭建无门槛高清视频分发系统
云计算·腾讯云
冬天的风滚草19 小时前
揭秘云原生混布资源调度器Koordinator (十五)GPU 信息采集与上报机制
云计算
冬天的风滚草19 小时前
揭秘云原生混布资源调度器Koordinator (十三)GPU 资源管理总览
云计算
冬天的风滚草19 小时前
揭秘云原生混布资源调度器Koordinator (十四)DeviceShare 调度插件详解
云计算
CodeCaptain21 小时前
配置Nginx反向代理来实现负载均衡,续阿里云ECS配置Nginx反向代理
nginx·阿里云·负载均衡
Bin Watson21 小时前
Ubuntu安装Docker记录(基于阿里云)
ubuntu·阿里云·docker
数字游民95271 天前
网站备案全流程回放(腾讯云)
人工智能·git·github·腾讯云·网站备案·waytoopc
CodeCaptain1 天前
阿里云ECS上配置Nginx的反向代理
nginx·阿里云·云计算
有谁看见我的剑了?1 天前
VMware OVF Tool 工具安装学习
云计算