(十八)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 镜像同步的主要内容,如果未能解决你的问题,请参考以下文章