华为云UCS-镜像迁移:image-migrator工作原理
image-migrator工作原理
使用image-migrator工具将镜像迁移到SWR时,需要准备两个文件,一个为镜像仓库访问权限文件“auth.json”,该文件中的两个对象分别为源镜像仓库和目标镜像仓库(即Registry)的账号和密码;另一个为镜像列表文件“images.json”,文件内容由多条镜像同步规则组成,每一条规则包括一个源镜像仓库(键)和一个目标镜像仓库(值)。将这两个文件准备好以后,放在image-migrator工具所在目录下,执行一条简单的命令,就可以完成镜像的迁移。关于两个文件的详细介绍如下:
- “auth.json”文件
“auth.json”为镜像仓库访问权限文件,其中每个对象为一个registry的用户名和密码。通常源镜像仓库需要具有pull以及访问tags权限,目标镜像仓库需要拥有push以及创建仓库权限。如果是匿名访问镜像仓库,则不需要填写用户名、密码等信息。“auth.json”文件的结构如下:
{ "源镜像仓库地址": { }, "目标镜像仓库地址": { "username": "xxxxxx", "password": "***************", "insecure": true } }
其中,文件内各个参数的描述与填写指导请参见表1。
表1 auth.json文件参数描述 参数
描述
源镜像仓库地址
支持“registry”和“registry/namespace”两种形式,需要跟下述“images.json”中的registry或registry/namespace对应。
说明:images中被匹配到的url会使用对应用户名密码进行镜像同步,优先匹配“registry/namespace”的形式。
目标镜像仓库地址
支持“registry”和“registry/namespace”两种形式,需要跟下述“images.json”中的registry或registry/namespace对应。
username
用户名,values可以填写具体取值,也可以使用“${env}”或者“$env”类型的字符串引用环境变量。
- 若您的镜像仓库为华为云SWR,则目标镜像仓库SWR的用户名形式为:区域项目名称@AK。
- 若您的镜像仓库为Amazon ECR或ACR,请登录相应厂商的镜像仓库控制台,查看镜像仓库的推送命令,获取相应账号。
password
密码,values可以填写具体取值,也可以使用“${env}”或者“$env”类型的字符串引用环境变量。
- 若您的镜像仓库为华为云SWR,则目标镜像仓库SWR的密码为AK和SK经过加密处理后的登录密钥,详细指导请参考获取长期有效登录指令。
- 若您的镜像仓库为Amazon ECR或ACR,请登录相应厂商的镜像仓库控制台,查看镜像仓库的推送命令,获取相应密码。
insecure
registry是否为http服务,如果是,insecure为true;默认是false。
示例:
{ "quay.io/coreos": { }, "swr.cn-north-4.myhuaweicloud.com": { "username": "cn-north-4@RVHVMX******", "password": "***************", "insecure": true } }
- “images.json”文件
该文件本质上是一个待迁移的镜像清单,由多条镜像同步规则组成,每一条规则包括一个源镜像仓库(键)和一个目标镜像仓库(值)。具体的要求如下:
- 同步的最大单位是仓库(repository),不支持通过一条规则同步整个namespace以及registry。
- 源仓库和目标仓库的格式与docker pull/push命令使用的镜像url类似(registry/namespace/repository:tag)。
- 源仓库和目标仓库(如果目标仓库不为空字符串)都至少包含registry/namespace/repository。
- 源仓库字段不能为空,如果需要将一个源仓库同步到多个目标仓库需要配置多条规则。
- 目标仓库名可以和源仓库名不同,此时同步功能类似于:docker pull + docker tag + docker push。
- 当源仓库字段中不包含tag时,表示将该仓库所有tag同步到目标仓库,此时目标仓库不能包含tag。
- 当源仓库字段中包含tag时,表示只同步源仓库中的一个tag到目标仓库,如果目标仓库中不包含tag,则默认使用源tag。
- 当目标仓库为空字符串时,会将源镜像同步到默认registry的默认namespace下,并且repository以及tag与源仓库相同,默认registry和默认namespace可以通过命令行参数以及环境变量配置。
示例如下:
{ "quay.io/coreos/etcd:1.0.0": "swr.cn-north-4.myhuaweicloud.com/test/etcd:1.0.0", "quay.io/coreos/etcd": "swr.cn-north-4.myhuaweicloud.com/test/etcd", "quay.io/coreos/etcd:2.7.3": "swr.cn-north-4.myhuaweicloud.com/test/etcd" }
使用image-migrator工具的config子命令可自动获取集群中工作负载正在使用的镜像,具体用法请参见image-migrator config使用方法。得到images.json文件后,您还可以根据需要进行修改、添加或删除。
- 分布式云原生集群迁移_华为云分布式云原生_华为云UCS集群迁移
- 镜像是什么_镜像文件_镜像功能_镜像转换-华为云
- 什么是CDN_CDN的工作原理_CDN应用场景_华为云
- 什么是ELB_ELB的优势_ELB的工作原理
- GaussDB原理_GaussDB数据库原理_高斯数据库原理-华为云
- 容器安全_镜像仓库_镜像安全-华为云
- 使用容器镜像部署函数_函数部署_函数工作流 FunctionGraph-华为云
- 容器镜像服务_什么是容器镜像服务_镜像上传下载-华为云
- MapReduce工作原理_MapReduce是什么意思_MapReduce流程_MRS_华为云
- 容器镜像是什么_华为云SWR_免费容器镜像