Harbor 复制管理

Harbor 提供了 harbor 与非 harbor 服务之间的镜像复制功能,通过复制镜像功能可以将 DockerHub 上的私有镜像给批量的同步到本地,也可以通过在多 Harbor 实例之间进行同步,达到镜像多副本,数据高可用的作用。如下图:

image.png

当 Harbor 系统管理员身份设置好复制规则后,当满足触发条件时,所有与规则匹配的资源都会被复制到目标仓库中。每个被复制的资源都会启动一个复制任务。如果目标仓库中不存在命名空间,则会自动创建一个新的命名空间。

借助该功能,既可以用作 harbor 仓库的备份,也可以用于测试环境和生产环境之间做镜像、artifact 等制品的同步。作为一种可以考虑的高可用部署的方案,可以部署两套 harbor,互相配置镜像复制同步。

登录 Harbor,打开“复制管理”选项卡,该页面用来管理复制规则,如新增、修改、删除复制规则等,如下图:

image.png

新建复制规则

点击“+ 新增规则”按钮新建规则,填写名称、描述、复制模式、资源过滤器、目的Registry等信息,如下图:

image.png

参数说明:

  • 名称:复制规则的名称

  • 描述:复制规则的描述信息

  • 复制模式:用来指定当前复制规则的动作,其中:

    • Push-based  表示把资源从本地 Harbor 推送到远端仓库。

    • Pull-based  表示把资源从远程仓库拉取到本地 Harbor。

  • 资源过滤器:

    • 名称:过滤资源的名称,不填写或者 "",匹配所有资源;"library/" 只匹配 "library" 下的资源。

    • Tag:过滤资源的 tag/version。不填写或者 "",匹配所有资源;"1.0" 只匹配以 "1.0" 开头的 tag/version。

    • 标签:根据标签筛选资源。

    • 资源:过滤资源类型。

  • 目的 Registry:指定目的仓库,该仓库信息在“仓库管理”中添加目的。

  • 目的 Namespace:指定目的端名称空间。如果不填,资源会被放到和源相同的名称空间下。

  • 触发模式:

    • 手动:手动触发。

    • 定时:使用 CRON 表达式指定定时触发条件。

    • 事件驱动:由 Harbor 的事件触发,如 Push 事件。

注意:

(1)如果勾选“删除本地资源时同时也删除远程的资源”,则本地仓库 Harbor 和远程仓库将保持一致。

(2)如果勾选“覆盖”,在同步镜像时,如果存在具有相同名称的资源,则会自动覆盖目标上的资源。

复制实践

如果我们存在如下架构的 Harbor,在“源Harobr”中配置了一个复制规则,该规则将复制镜像到“目标Harbor”,如下图:

image.png

在 Docker 中执行如下命令推送 redis 镜像到源 Harbor 服务,如下:

// 登录 harbor
[root@hxvm ~]# docker login hxvm:80
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

// 打标签 
[root@hxvm ~]# docker tag redis hxvm:80/demo/redis:v1.0

// 推送镜像
[root@hxvm ~]# docker push hxvm:80/demo/redis:v1.0
The push refers to repository [hxvm:80/demo/redis]
2f1dc4a31b6f: Pushed 
5f70bf18a086: Pushed 
5c6b18089c89: Pushed 
fa65e4be9d35: Pushed 
a71dbd37c9b5: Pushed 
2327eaf97cce: Pushed 
6f55c091a296: Pushed 
8d853c8add5d: Pushed 
v1.0: digest: sha256:2f4b8bcfa2f4c8dcfafa4925c7d416f70692254617911f6e4f3ceaedf63313d9 size: 1986

执行完上面命令后,再次进入“复制管理”页面,多出了一条日志记录,该日志触发模式为“event_based”,如下图:

image.png

登录到目标 Harbor,查看项目“demo”项目,多出了一个 demo/redis 镜像,这就是刚才我们推送到源 Harbor 上的镜像,如下图:

image.png

修改复制规则

选中待修改的复制规则,点击“修改”按钮修改改规则,如下图:

image.png

注意:复制规则不允许修改复制模式。

删除复制规则

选中待删除的复制规则,点击“删除”按钮,删除它。如下图:

image.png

注意:请谨慎执行该操作,该操作将删除复制规则。

复制复制规则

选中待复制的规则,点击“复制”按钮进行过复制,手动触发复制规则,如下图:

image.png

复制成功后,将会添加一条 Trigger 为 manual 的日志,如下图:

image.png

注意:请谨慎操作,频繁的复制将会导致网络压力过大。


说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号