将镜像同步到其他区域
操作场景
容器镜像服务企业版支持与其他注册表之间同步容器镜像及Helm Chart,可实现单点推送及全球自动同步分发,方便企业在全球多个地域快速部署更新容器业务。当前支持与如下类型注册表之间同步:
- 容器镜像服务:即SWR基础版仓库中的镜像。
- 容器镜像服务企业版:支持华为云不同地域的企业注册表以及客户基于开源harbor搭建的私有注册表。
镜像同步功能允许用户自定义创建同步规则,可指定某个注册表内的部分资源同步至另一个注册表内的命名空间。例如,用户可选择同步资源类型(容器镜像、Helm Chart、或是全部同步),通过正则表达式过滤镜像及版本,可选择是否覆盖已有的同名镜像,避免历史数据覆盖丢失。
您还可以登录统一身份认证创建自定义策略来灵活的控制是否允许某个Region的镜像可以同步到其他Region。自定义策略创建成功后,在使用策略所禁止的源Region或者目标Region创建镜像同步规则时,同步规则会创建失败。详细的自定义策略请参见SWR自定义策略。
约束与限制
镜像同步时,若单个镜像存在多个签名文件附件,仅同步最新签名文件附件。
镜像同步时,若源镜像名称包含斜杠“/”(如test/image/nginx),同步到目标端后将仅保留最后一段作为镜像名称(nginx)。
操作步骤
添加目标仓库
- 由于容器镜像服务企业版目前处于公测阶段,如果您的租户登录页面后看不到“企业版”链接,请提交工单申请入口。申请成功后,登录容器镜像服务企业版控制台,在页面左上角切换Region到您所在的Region,单击注册表名称进入注册表详情页面。
- 在左侧导航栏选择“镜像同步 > 目标仓库”。
- 在右上角单击“添加目标仓库”。
表2 目标仓库参数说明 参数
示例
参数说明
仓库名
remote-registry
目标仓库名称。
1-64字符组成,只能包含英文大小写、数字、汉字、中划线和下划线。
提供者
容器镜像服务企业版
选择目标仓库所在位置。
- 容器镜像服务:即SWR基础版中的镜像。
- 容器镜像服务企业版:其他仓库,可以是不同地域的企业注册表。
- 开源Harbor仓库:使用harbor搭建的镜像仓库。
仓库地址
swr.cn-east-3.myhuaweicloud.com
目标仓库的地址。
访问ID
访问密码
-
目标仓库的访问ID和密码。
ID和密码对应docker login命令中的用户名和密码。
验证远程证书
-
校验证书是否为授信单位发布,不勾选则不校验。
所属区域
华东-上海一
提供者为“容器镜像服务 企业版”时需要选择。
所属项目
华东-上海一
提供者为“容器镜像服务 企业版”时需要选择。
所属仓库
-
提供者为“容器镜像服务 企业版”时需要选择。
hosts配置
-
仅提供者为“开源Harbor仓库”时才有该参数,后台服务只能解析当前局点的公共域名,若涉及其他域名请配置host参数,如仓库域名与OBS桶域名。
描述
-
目标仓库的描述信息,可包含1024字符。
图1 添加目标仓库
- 单击“确定”。
- 创建完成后,界面会显示目标仓库的健康状态,您还可以对目标仓库的信息进行修改。
创建同步规则
- 由于容器镜像服务企业版目前处于公测阶段,如果您的租户登录页面后看不到“企业版”链接,请提交工单申请入口。申请成功后,登录容器镜像服务企业版控制台,在页面左上角切换Region到您所在的Region,单击注册表名称进入注册表详情页面。
- 在左侧导航栏选择“镜像同步 > 同步规则”。
- 在右上角单击“创建同步规则”。
- 填写具体规则。详情请参见图2 创建同步规则。
表3 同步规则参数说明 参数
示例
参数说明
规则名称
SyncRule
镜像同步规则的名称。
由字母、汉字、数字、下划线(_)、中划线、(-)组成,1-256个字符。
同步模式
推送到目标仓库
- 推送到目标仓库:将本仓库中镜像推送到目标仓库中。
- 从目标仓库拉取:从目标仓库中拉取镜像到本仓库中。
目标仓库
-
选择上面添加目标仓库步骤中添加的目标仓库。
目标命名空间
library1
同步至目标仓库后所在的命名空间(其他云厂商可能被称作项目等),不填写则默认是与本仓库中同名的命名空间,如果目标仓库中没有该命名空间同步可能会失败。
本地命名空间
library1
从目标仓库拉取到本仓库,镜像所在的命名空间,不填写则默认是与目标仓库中同名的命名空间(其他云厂商可能被称作项目等),如果没有命名空间将新建。
本地仓库推送范围
library2
nginx-*
**
命名空间:命名空间名称范围。
镜像:镜像名称,默认使用正则表达式匹配。单击
可手动选择镜像。正则表达式规则可填写如nginx-* 、{repo1, repo2} 等,其中:
- *:匹配不包含路径分隔符“/”的任何字段。
- **:匹配包含路径分隔符“/”的任何字段。
- ?:匹配任何单个非“/”的字符。
- {选项1, 选项2, ...}:同时匹配多个选项。
版本:镜像的版本,同样使用正则表达式匹配,匹配规则与镜像相同。
说明:当同步模式是“推送到目标仓库”时有该参数。
目标仓库拉取范围
library2
nginx-*
**
命名空间:命名空间名称范围。
镜像:镜像名称,使用正则表达式匹配。
正则表达式规则可填写如nginx-* 、{repo1, repo2} 等,其中:
- *:匹配不包含路径分隔符“/”的任何字段。
- **:匹配包含路径分隔符“/”的任何字段。
- ?:匹配任何单个非“/”的字符。
- {选项1, 选项2, ...}:同时匹配多个选项。
版本:镜像的版本,同样使用正则表达式匹配,匹配规则与镜像相同。
说明:当同步模式是“从目标仓库拉取”时有该参数。
触发模式
定时 + 手动
- 手动:手动触发,规则创建完成后需要您手动单击执行。
- 事件触发 + 手动:事件触发指推送和被拉取一方有新增镜像且符合匹配规则时触发同步。
- 定时 + 手动:定时即为设置周期性定时同步。
定时
-
触发模式为“定时 + 手动”时可以设置。
覆盖
-
当同步相同版本的镜像时,是否覆盖。
规则描述
-
规则的描述信息。
图2 创建同步规则
- 单击“确定”完成规则创建。
同步规则示例
- 推送到目标仓库
将本仓库中library命名空间中以“nginx-”名称开头的所有版本镜像,推送到目标仓库test的lib1命名空间下,触发模式为手动触发,且覆盖相同名称版本的镜像。

- 从目标仓库拉取
将目标仓库test的lib1命名空间中以“nginx-”名称开头的所有版本镜像,拉取到本仓库library1命名空间中,触发方式为手动触发,且覆盖相同名称版本的镜像。

管理同步规则
成功创建后即可在“同步规则”页面查看已创建的同步规则,您可以执行以下操作管理同步规则。
- 启用:
表示规则启用,
表示规则关闭。新创建的同步规则默认为启用状态,您可以自行调整。 - 执行:手动触发同步规则。
- 编辑:重新编辑同步规则,所有参数均可编辑。
- 删除:删除该同步规则。

镜像同步
镜像同步操作验证
- 验证同步状态:查看同步任务,当同步规则被触发时,符合规则范围的镜像将被同步,同步任务包含的信息如表3 同步任务。 图3 同步规则
图4 任务详情
- 验证目标仓库中的镜像:登录目标仓库,查看同步的镜像是否存在于目标仓库中。
- 验证镜像内容:从目标仓库中拉取镜像,并运行容器,验证镜像内容是否正确。