(十八)VMware Harbor 镜像同步

Posted shix0909

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(十八)VMware Harbor 镜像同步相关的知识,希望对你有一定的参考价值。

为什么需要镜像同步

由于对镜像的访问是一个核心的容器概念,在实际使用过程中,一个镜像库可能是不够用的,下例情况下,我们可能会需要部署多个镜像仓库:

  • 国外的公有镜像下载过慢,需要一个中转仓库进行加速
  • 容器规模较大,一个镜像仓库不堪重负
  • 对系统稳定性要求高,需要多个仓库保证高可用性
  • 镜像仓库有多级规划,下级仓库依赖上级仓库

更常用的场景是,在企业级软件环境中,会在软件开发的不同阶段存在不同的镜像仓库,

  • 在开发环境库,开发人员频繁修改镜像,一旦代码完成,生成稳定的镜像即需要同步到测试环境。
  • 在测试环境库,测试人员对镜像是只读操作,测试完成后,将镜像同步到预上线环境库。
  • 在预上线环境库,运维人员对镜像也是只读操作,一旦运行正常,即将镜像同步到生产环境库。
  • 在这个流程中,各环境的镜像库之间都需要镜像的同步和复制。

功能简介

在功能设计方面,Harbor仍然以“项目”为中心, 通过对项目配置“复制策略”,标明需要复制的项目以及镜像。管理员在复制策略中指明目标实例,即复制的“目的地”,并对它的地址和连接时使用的用户名密码进行设置。当复制策略被激活时,源项目下的所有镜像,都会被复制到目标实例;此外,当源项目下的镜像被添加或删除(push或delete), 只要策略还在激活状态,镜像的变化都会同步到目标实例上去, 如下图所示
技术图片

 

在较大的容器集群中,往往需要多个Registry服务器做负载均衡,可以采用主从发布模式,镜像只需要发布一次,就可以推送到多个Registry实例中。同时还支持双主复制和层次型的多级镜像发布,如下图所示: 

技术图片

 

Harbor的镜像同步机制

 

有了多个镜像仓库,在多个仓库之间进行镜像同步马上就成为了一个普遍的需求。比较传统的镜像同步方式,有两种:

 

  • 第一种方案,使用Linux提供的RSYNC服务来定义两个仓库之间的镜像数据同步。
  • 第二种方案,对于使用IaaS服务进行镜像存储的场景,利用IaaS的配置工具来对镜像的同步进行配置。

 

这两种方案都依赖于仓库所在的存储环境,而需要采用不同的工具策略。Harbor则提供了更加灵活的方案来处理镜像的同步,其核心是三个概念:

 

  • 用Harbor自己的API来进行镜像下载和传输,作到与底层存储环境解耦。
  • 利用任务调度和监控机制进行复制任务的管理,保障复制任务的健壮性。在同步过程中,如果源镜像已删除,Harbor会自动同步删除远端的镜像。在镜像同步复制的过程中,Harbor会监控整个复制过程,遇到网络等错误,会自动重试。
  • 提供复制策略机制保证项目级的复制需求。在Harbor中,可以在项目中创建复制策略,来实现对镜像的同步。与Docker Registry的不同之处在于,Harbor的复制是推(PUSH)的策略,由源端发起,而Docker Registry的复制是拉(PULL)的策略,由目标端发起。

 

我们准备两台机器,并分别安装好Harbor( 版本:1.4.0 ):

主Harbor harbor.test.com 192.168.5.150
备Harbor harbor-01.test.com 192.168.5.151
docker client   192.168.5.107

1. 在主Harbor 创建新项目test

技术图片

2.在主Harbor的仓库管理->新建目标:

 技术图片

3.在Harbor的复制管理->新建规则:

技术图片

4.在客户端上传image到主Harbor

[[email protected] ~]# docker push harbor.test.com/test/docker-test:latest
The push refers to a repository [harbor.test.com/test/docker-test]
146788dad3cb: Layer already exists 
2f6c24bddb30: Layer already exists 
952a32dca55a: Layer already exists 
b308dc99c2a4: Layer already exists 
4ac76077f2c7: Layer already exists 
latest: digest: sha256:520230466225bac646e1cd5ff645eb3f6d24b8e62039e5ffb5d355c67e4058e6 size: 1354

5.在主Harbor的复制管理中看到多了一条复制任务在执行:

技术图片

6.再在备Harbor中已经看到test/docker-test.latest 已经从主Harbor自动复制过来:

技术图片

参考:https://blog.csdn.net/hxpjava1/article/details/79308890

参考:https://blog.csdn.net/kozazyh/article/details/79829463

参考:https://my.oschina.net/vmwareharbor/blog/728085

以上是关于(十八)VMware Harbor 镜像同步的主要内容,如果未能解决你的问题,请参考以下文章

Centos8 部署Harbor仓库

搭建Vmware Harbor 镜像仓库

私有容器镜像仓库harbor

docker镜像仓库 harbor 笔记

docker 镜像仓库Harbor

如何在Rancher Catalog中使用VMware Harbor