(十八)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
[root@clinet ~]# 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 镜像同步的更多相关文章
- (二十)VMware Harbor - API
可以用swagger在线解析 http://editor.swagger.io/将swagger.yaml中的内容拷贝到里面即可. 官方文档说明链接如下:https://github.com/vmwa ...
- (十)VMware Harbor 日志管理
VMware Harbor 日志管理 1. 项目日志 每个项目下都有一个"日志"页签. 单击"日志"可以列出所有日志.可以按用户名或"高级搜索&quo ...
- VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器
VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器 View 传输服务器用于管理和简化数据中心与在最终用户本地系统上检出使用的 View 桌面之间的数据传输.必须安 ...
- VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器
VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器 View Compose服务可安装在管理虚拟机的vC ...
- VMware harbor && minio 搭建企业docker私有镜像以及需要注意的问题
1. docker harbor 配置 建议使用在线安装的模式(离线包太大了) 首先需要安装docker-compose .docker .mino (具体安装可以参考官网后者我的博 ...
- 剑指Offer(十八):二叉树的镜像
剑指Offer(十八):二叉树的镜像 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/baidu ...
- (九)VMware Harbor 项目管理-上传/下载镜像
VMware Harbor项目管理 Harbor中的项目包含应用程序的所有存储库. Harbor有两类项目: 公共:所有用户都拥有公共项目的读取权限,您可以方便地以这种方式与其他人共享一些存储库. 私 ...
- (十九)VMware Harbor 详细介绍
一 . 简介 Harbor是VMware公司开源的企业级DockerRegistry项目,项目地址为https://github.com/vmware/harbor.其目标是帮助用户迅速搭建一个企业级 ...
- (八)VMware harbor 成员管理
(一)VMware harbor 成员管理 可以给项目添加成员,成员必须是已经注册的成员. 添加成员后,成员就会有4种角色:项目管理员,维护人员,开发人员,访客. 1.1 新建成员 1.2 修改角色 ...
随机推荐
- 深入理解 Web 协议 (三):HTTP 2
本篇将详细介绍 HTTP 2 协议的方方面面,知识点如下: HTTP 2 连接的建立 HTTP 2 中帧和流的关系 HTTP 2 中流量节省的奥秘:HPACK 算法 HTTP 2 协议中 Server ...
- Spring Boot移除内嵌Tomcat,使用非web方式启动
前言:当我们使用Spring Boot编写了一个批处理应用程序,该程序只是用于后台跑批数据,此时不需要内嵌的tomcat,简化启动方式使用非web方式启动项目,步骤如下: 1.在pom.xml文件中去 ...
- Prism.WPF -- Prism框架使用(下)
本文参考Prism官方示例 命令使用 Prism提供了两种命令:DelegateCommand和CompositeCommand. DelegateCommand DelegateCommand封装了 ...
- LeetCode674. 最长连续递增序列
原题链接 1 class Solution: 2 def findLengthOfLCIS(self, nums: List[int]) -> int: 3 ans = begin = 0 4 ...
- Git:分支管理
代码中至少有一个分支,就是主分支master,默认都是在主分支上开发. 多分支 分支名: 版本库中必须唯一 不能以 - 开头 可以试用/,但不能以/结尾,被/分隔的名称不能以.开头 不能有连个连续的 ...
- CCF(地铁修建):向前星+dijikstra+求a到b所有路径中最长边中的最小值
地铁修建 201703-4 这题就是最短路的一种变形,不是求两点之间的最短路,而是求所有路径中的最长边的最小值. 这里还是使用d数组,但是定义不同了,这里的d[i]就是表示从起点到i的路径中最长边中的 ...
- 创建一个scrapy爬虫框架的项目
第一步:打开pycharm,选择"terminal",如图所示: 第二步:在命令中端输入创建scrapy项目的命令:scrapy startproject demo (demo指的 ...
- C++树——遍历二叉树
在讲遍历之前,我们要先创建一个树: #include <iostream> using namespace std; typedef struct node; typedef node * ...
- Win 10 下Pipenv源码安装 odoo12
因为,本身电脑已经安装odoo8,9,10等odoo的版本,当时,没有考虑是直接是统一的环境很配置. 现在,在odoo11的环境下,需要Python 3的语言环境可以很好地支持odoo11的功能,所以 ...
- 得分(JAVA语言)
package 第三章习题; /* * 给出一个由O和X组成的串(长度为1~80),统计得分. * 每个O得分为目前连续出现的O的个数,X得分为0. * 例如,OOXXOXXOOO的得分为 * ...
