如何在 Harbor 与阿里云镜像服务 (ACR) 间优雅进行镜像迁移

2024-01-05 18:50

本文主要是介绍如何在 Harbor 与阿里云镜像服务 (ACR) 间优雅进行镜像迁移,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

9b42743a4bc380e66d8cd9dc2ea66994.png

【摘要】阿里云镜像仓库ACR和Harbor私有镜像仓库之间镜像的相互迁移,为上云添砖加瓦。


前言

业务场景:

  公司之前使用阿里云的ACR镜像仓库服务。后来经过发展,搭建了自己的Harbor私有镜像仓库服务,因为之前的容器镜像都是存放在阿里云镜像仓库中的。所以现在需要将阿里云的镜像【迁移】到Harbor中。

  本篇以图文方式详细的记录了从“0“开始的操作步骤,实际操作过程的难点在于【新建目标规则】这一步操作中,也是楼主踩坑的地方,部分操作可根据实际情况跳过。


  本文适用于阿里云和Harbor之间镜像的相互迁移,即可将阿里云的镜像迁移到Harbor,也可将Harbor中的镜像迁移到阿里云。

扩展
 阿里云有个开源的镜像迁移工具image-syncer,将会在后面的文章中详细介绍和使用。

创建RAM用户(访问控制)

【登录阿里云】—【首页】—【访问控制】—【创建RAM用户】

fe453d3a8bc098cfda4866fc42f23ce0.png02a67dddaaae8140d52014e8a5cd7e1c.png


阿里云配置

在在阿里云进行以下操作:

2.1 创建个人实例(个人版)

1a0de6d60ffd3e940b5f153ac8c76159.png 6445ebc8ad58e17da38f44b4a7f4c5cb.png b570096939a13fa47448e30922fc3476.png

2.2 设置镜像密码

77ce89b4dc6c4d1a47fb476f451da49a.png 973dd528a19030c82bf65b8b5c295fc6.png

2.3 创建命名空间

  创建项目前需要先创建命名空间。一个账号最多可以创建 3 个命名空间。定义您的镜像仓库命名空间,设置后不可修改。长度为2-30位,可填写小写英文字母、数字,可使用的分隔符包括“_”、“-”(分隔符不能在首位或末位)

58474b09096d0fde4acc99c0a9959b11.png 3877952a289c5ba54a8e13d72f0f8e7c.png 2e0fe6828563c559d882562db0d88ce2.png

2.4 配置访问凭证

  Docker客户端登录时使用的用户名为阿里云账户全名,密码为当前设置的密码3d6e0f307d0944b7ee41ce31119505f7.png获取手机验证码后点击“确认”

2.5 创建镜像仓库

  在【仓库管理】—【镜像仓库】—【创建镜像仓库】—【】 选择【本地仓库】(可以通过命令行推送镜像到镜像仓库) 然后点击【创建镜像仓库】


将镜像推送到阿里云镜像仓库

3.1 命令行登录阿里云镜像仓库

可在镜像仓库服务查看详细的登录命令。

3.2 给镜像打Tag

新的镜像格式为:registry-vpc.cn-hangzhou.aliyuncs.com/阿里云用户名/镜像名称:镜像标签

$ docker  images
REPOSITORY             TAG           IMAGE ID     CREATED     SIZE
vmware/registry-photon v2.6.2-v1.5.0 3059f44f4b9a 4 years ago 198MB
...
$ docker tag vmware/registry-photon:v2.6.2-v1.5.0 \
registry.cn-hangzhou.aliyuncs.com/lidabai6/registry-photon:v2.6.2-v1.5.0推送镜像
$ docker push registry.cn-hangzhou.aliyuncs.com/lidabai6/registry-photon:v2.6.2-v1.5.0 
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/lidabai6/registry-photon]
5e9191f65a4c: Pushed 
1da5c77da464: Pushed 
654b65c0f8ff: Pushed 
75609935cf31: Pushed 
7ab0310b3d9d: Pushed 
fd8233cdfcf0: Pushed 
52ef9064d2e4: Pushed 
v2.6.2-v1.5.0: digest: sha256:3ee1c992200a069d8d943aa21f555950bd7d1764122a936ba2a3cb115885bf86 size: 1783

在阿里云镜像仓库管理界面可以看到已经推送成功的镜像了:

Harbor配置镜像迁移

以下操作在Harbor UI界面完成。

4.1  新建目标规则(踩坑记录)

在Harbor UI管理界面进行操作:

(1)【系统管理】—【仓库管理】—【新建目标】

(2)填写目标信息

  • 提供者:下拉选择”Alibaba ACR";

  • 目标名:填写一个具有标识性的名称;

  • 目标URL:在阿里云镜像仓库的“容器镜像服务/实例列表/镜像仓库/基本信息”可以查询到,下拉选择即可,不同地域会不一样

  • 访问ID:阿里云镜像仓库的命名空间名称;ram账户id;

  • 访问密码:在前面【配置访问凭证】时设置的密码;

  • 验证远程证书:如果是自签或者非信任的证书,不可勾选该项;

  • 点击【连接测试】看Harbor与阿里云镜像仓库ACR是否可以正常连接。

注意!
 本处【测试连接失败】, 您可以使用您的 ram 帐户创建 AK,而不是使用密码。Aliyun SDK不允许使用密码进行认证访问控制(Resource Access Management,RAM)是阿里云提供的一项管理用户身份与资源访问权限的服务。使用RAM,您可以创建、管理RAM用户(例如员工、系统或应用程序),并可以控制这些 RAM 用户对资源的操作权限。需要实名认证。重新填写后连接测试成功!

9c73008b579ba1713e6cadceee5a3295.png

4.2 新建复制规则

在Harbor UI管理界面操作:
【系统管理】—【复制管理】—【新建规则】,
然后填写信息:

  • 名称:自定义一个名称即可;

  • 复制模式:pull-bashd就是将阿里云上的镜像拉到Harbor,Push则相反;

  • 源仓库:下拉选择刚才【新建目标规则】的名称开头的;

  • 触发模式:手动(全量)

然后点击【保存】,可以看到”新建规则“成功!30e3b4f7ab6d73685811f42b4172331c.png

4aa7e7590233259203886f9d9917d9ab.png

4.3 执行”迁移“

选择【系统管理】—【复制管理】—【新建规则】中刚才新建成功的目标规则;
261e5d54e7cf4f093670121e71bbca06.png然后点击【复制】按钮开始”手动“执行”复制“;
然后在跳出的会话框中,继续点击【复制】进行“复制规则确认”。4d31a440d79877eca06d43fedf89a057.png

51c373e3ee271eee9efce0ee6bb1f2ea.png

4.4 验证

在执行复制任务完成后,查看【复制任务】对应ID的事件【成功百分比】是否为100%,如果是100%则表示全部迁移成功,然后检查两端的镜像数量是否一致。
如果【成功百分比】不是100%,则点击对应任务的ID进去查看详细的日志。

9ac6096f0a0b5fa33895f996f0563c47.png

本文转载自:「Harbor进阶实战」,原文:https://url.hi-linux.com/CMsdt,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

c6495de89a3bd759d9b7c169b4e7f10c.gif

最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。

b6c97263661149a801234d57eb3cdedd.png

你可能还喜欢

点击下方图片即可阅读

87ccd1ac9effabf5866658ef3c27ad3f.png

Kubernetes 网络排错骨灰级中文指南

b6855a648c0872547cc878f26a43e101.png
点击上方图片,『美团|饿了么』外卖红包天天免费领

12cadc353fb344be7affcc61ebb1fb81.png

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

这篇关于如何在 Harbor 与阿里云镜像服务 (ACR) 间优雅进行镜像迁移的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/573826

相关文章

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

详解Java中三种状态机实现方式来优雅消灭 if-else 嵌套

《详解Java中三种状态机实现方式来优雅消灭if-else嵌套》这篇文章主要为大家详细介绍了Java中三种状态机实现方式从而优雅消灭if-else嵌套,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录1. 前言2. 复现传统if-else实现的业务场景问题3. 用状态机模式改造3.1 定义状态接口3

Conda国内镜像源及配置过程

《Conda国内镜像源及配置过程》文章介绍Conda镜像源使用方法,涵盖临时指定单个/多个源、永久配置及恢复默认设置,同时说明main(官方稳定)、free(逐渐弃用)、conda-forge(社区更... 目录一、Conda国内镜像源二、Conda临时使用镜像源指定单个源临时指定多个源创建环境时临时指定源

MySQL进行分片合并的实现步骤

《MySQL进行分片合并的实现步骤》分片合并是指在分布式数据库系统中,将不同分片上的查询结果进行整合,以获得完整的查询结果,下面就来具体介绍一下,感兴趣的可以了解一下... 目录环境准备项目依赖数据源配置分片上下文分片查询和合并代码实现1. 查询单条记录2. 跨分片查询和合并测试结论分片合并(Shardin

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底