本文将为您介绍将自建Harbor上的镜像同步到ACR(Alibaba Cloud Container Registry)企业版,提供image-syncer的基本使用示例。
背景信息
步骤一:创建命名空间
命名空间可以有效管理该命名空间下的仓库集合,包括仓库权限和仓库属性。如果需要同步的仓库不存在,您可以在命名空间下打开自动创建仓库,使用docker push命令自动创建公有或私有仓库。
创建完成后,您可以在命名空间列表中看到新创建的命名空间。同时可以对命名空间进行管理,请参见命名空间的基本操作。
步骤二:授权子账号
如果您使用子账号进行后续操作,需要先创建RAM子账号并授予授权。如果您使用主账号进行后续操作,请跳过此步骤。
步骤三:配置公网访问控制
企业版实例创建后,默认不允许通过公网访问。因此在配置公网的访问控制策略前,需要先打开公网的访问入口。
步骤四:获取访问凭证
在拉取私有镜像或者上传镜像前,需要docker login
输入您的凭证信息。请按照如下操作获取访问凭证。
- 单击左侧导航栏的 。
- 在实例列表页面中,单击所需配置的企业版实例,进入该实例的配置页面。
- 单击左侧导航栏的 。
- 单击设置固定密码。
- 在设置固定密码页面填写密码和确认密码,并单击确认。
您可以通过API获取临时密码访问镜像服务实例,请参见GetAuthorizationToken。
步骤五:配置image-syncer的同步
使用访问凭证中创建的密码,完成如下image-syncer的同步配置。
与之前同步到默认实例版ACR不同的是,每个ACR企业版实例有自己单独的域名,并且命名空间对于每个不同企业版实例之间来说都是隔离的。
说明 每个ACR企业版实例有自己单独的域名,一个公网可见,一个仅专有网络可见。
- 如果镜像同步工具运行在个人环境上需要使用公网域名。
- 如果要使用仅专有网络可见的域名,则将镜像同步工具运行在阿里云ECS实例上,并且通过配置使域名对该ECS所在的专有网络可见。
本例中,本地搭建的Harbor中的library/nginx仓库同步到ACR企业版实例中image-syncer命名空间下,并且保持仓库名称为nginx,配置文件如下:
{
"auth": {
"harbor.myk8s.paas.com:32080": {
"username": "admin",
"password": "xxxxxxxxx",
"insecure": true
},
"ruohe-test-registry.cn-shanghai.cr.aliyuncs.com": {
"username": "ruohehhy",
"password": "xxxxxxxx"
}
},
"images": {
"harbor.myk8s.paas.com:32080/library/nginx": ""
}
}
harbor.myk8s.paas.com:32080
:本地搭建的Harbor访问地址。需要替换成实际值。username
:Harbor的用户名,本例中为admin。password
:Harbor的密码。insecure
:需要设置为ture。
ruohe-test-registry.cn-shanghai.cr.aliyuncs.com
:本例中使用公网访问域名。username
:获取访问凭证的登录用户名。password
:获取访问凭证的创建的密码。
"harbor.myk8s.paas.com:32080/library/nginx": ""
: 通过harbor.myk8s.paas.com:32080访问library/nginx仓库。
通过image-syncer同步镜像
执行结果
一次镜像同步会经历三个阶段:生成同步任务、执行同步任务以及重试失败任务。其中,每个同步任务都代表了一个需要同步的镜像(tag),如果配置文件中某条规则没有指定tag,在“生成同步任务”阶段会自动列出源仓库所有tag,并生成对应的同步任务,如果生成同步任务失败,也会在重试阶段进行重试。
- 同步镜像正常结果输出如下所示。
- 同步镜像异常结果(例如,账号或密码错误)输出如下所示。
- 在运行时,image-syncer会打印出如下的日志信息。
在文档使用中是否遇到以下问题
更多建议
匿名提交