一 Harbor主从介绍

harbor官方默认提供主从复制的方案来解决镜像同步问题,通过复制的方式,我们可以实时将测试环境harbor仓库的镜像同步到生产环境harbor,类似于如下流程:

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

在实际生产运维的中,需要把镜像发布到几十或上百台集群节点上。这时,单个Registry已经无法满足大量节点的下载需求,因此要配置多个Registry实例做负载均衡。手工维护多个Registry实例上的镜像,将是十分繁琐的事情。Harbor可以支持一主多从的镜像发布模式,可以解决大规模镜像分发与同步,架构如下:

二 Harbor主从部署

2.1 前期准备

节点
IP地址
备注
docker01
172.24.8.111
Docker harbor主节点,reg.harbor01.com
docker02
172.24.8.112
Docker harbor从节点,reg.harbor02.com
docker03
172.24.8.113
Docker客户端,用于测试仓库
建议所有节点添加hosts解析:
 172.24.8.111 reg.harbor01.com
172.24.8.112 reg.harbor02.com
 

2.1 主从节点部署Harbor

部署方法可参考《011.Docker仓库管理》部署。
提示:主从节点都必须部署Harbor,本实验采用http形式,只需要修改hostname为对应的域名即可。
注意:Job services主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上。因此若采用域名配置,则需要在jobservice的hosts中添加主从解析,为方便修改,可将使用以下脚本快速在所有容器hosts添加相应解析:
 root@docker02:~/harbor# cat addhosts.sh
#!/bin/sh
#****************************************************************#
# ScriptName: test.sh
# Author: xhy@itzgr.com
# Create Date: 2018-10-27 15:48
# Modify Author: xhy@itzgr.com
#***************************************************************#
docker ps | awk '{print $1}'>./dockerlist.txt
for id in `cat ./dockerlist.txt`
do
HOSTS=`docker inspect $id | grep hosts | awk -F "\"" '{print $4}'`
echo -e "172.24.8.111 reg.harbor01.com\n172.24.8.112 reg.harbor02.com" >> $HOSTS
done
 
在Harbor部署完毕后执行该脚本:chmod u+x addhosts.sh && bash addhosts.sh。

2.2 主节点测试

浏览器使用默认账号和密码Harbor12345访问:http://reg.harbor01.com

2.3 创建用于复制的测试项目

2.4 仓库管理新建从目标

2.5 创建复制策略

2.6 docker 客户端测试

 root@docker03:~# vi /etc/hosts
172.24.8.111 reg.harbor01.com
172.24.8.112 reg.harbor02.com
root@docker03:~# vi /etc/docker/daemon.json
{
"insecure-registries": ["http://reg.harbor01.com","http://reg.harbor02.com"]
}
root@docker03:~# systemctl daemon-reload
root@docker03:~# systemctl restart docker.service
root@docker03:~# docker login reg.harbor01.com #登录registry
Username: admin
Password:
 
提示:公开的registry可pull,但push也必须登录,私有的registry必须登录才可pull和push。
 root@docker03:~# docker pull hello-world
root@docker03:~# docker tag hello-world:latest reg.harbor01.com/copyregistry/hello-world:xhy
root@docker03:~# docker push reg.harbor01.com/copyregistry/hello-world:xhy
 
浏览器使用默认账号和密码Harbor12345访问:http://reg.harbor01.com,查看是否同步状态:
浏览器使用默认账号和密码Harbor12345访问:http://reg.harbor02.com,查看是否同步成功:
 
参考链接:https://www.cnblogs.com/breezey/p/9444231.html
参考链接:https://blog.csdn.net/hiyun9/article/details/79655385

012.Docker私有仓库多Harbor同步部署的更多相关文章

  1. Docker私有仓库与Harbor部署使用

    Docker私有仓库与Harbor部署使用 目录 Docker私有仓库与Harbor部署使用 一.本地私有仓库 1. 下载registry镜像 2. 在daemon.json文件中添加私有镜像仓库地址 ...

  2. 企业级Docker私有仓库之Harbor部署(http)

    部署环境 Centos7.3 x64 docker-ce-17.06.0 docker-compose-1.15.0 Python-2.7.5(系统默认) Docker及Docker-compose安 ...

  3. docker 私有仓库之Harbor搭建与使用

    Harbor搭建 下载Harbor: http://harbor.orientsoft.cn/ #下载offline版本 配置Harbor tar xvf harbor-online-installe ...

  4. docker 私有仓库 harbor docker-compose

    c创建docker私有仓库 docker pull registry:2.1.1 mkdir /opt/registry#mkdir /var/lib/registry docker run -d - ...

  5. 2.使用nexus3配置docker私有仓库

    1,配置走起 1,创建blob存储 登陆之后,先创建一个用于存储镜像的空间. 定义一个name,下边的内容会自动补全. 然后保存. 注意:实际生产中使用,建议服务器存储500G或以上. 2,创建一个h ...

  6. 构建Docker私有仓库

    一.Docker私有仓库   上一篇说了如何利用Dockerfile在已有镜像的基础上构建自己的镜像,那么如果需要让镜像在一个团队中使用,就需要一个仓库,有几种方式可以共享私有镜像. 1.将镜像上传至 ...

  7. docker 私有仓库简易搭建

    概要 本地私有仓库 局域网私有仓库 总结 概要 docker hub 使用非常方便,而且上面有大量的镜像可以使用. 但是,每次都远程下载镜像速度非常慢,如果能在本地做一个 docker 的仓库,多人协 ...

  8. docker私有仓库-https+nginx

    一.概述 使用的是registry-2.4版本,因为在这个版本开始提供了garbage-collect,能够清理掉blobs,2.1开始提供了api的删除功能,但是只是删除的index并没有释放掉磁盘 ...

  9. 手把手教你搭建Docker私有仓库

    章节一:centos7 docker安装和使用_入门教程 章节二:使用docker部署Asp.net core web应用程序 有了前面的基础,接下来的操作就比较简单了.先准备两台虚拟机,两台机器上都 ...

随机推荐

  1. 【金色】种瓜得瓜,种豆得豆 Gym - 102072H (线段树)

    题目链接:https://cn.vjudge.net/problem/Gym-102072H 题目大意:中文题目 具体思路:通过两棵线段树来维护,第一棵线段树来维护当前坐标的点的日增长速度(默认每一年 ...

  2. mysql 原理 ~ 事务隔离机制

    简介: 事务隔离知多少内容  一 基础知识  1 事务特性 ACID   A 原子性 C 一致性 I 隔离性 D 持久性  2 并行事务出现的问题    1 脏读 读取了其他事务未提交的数据      ...

  3. java中String类型

    string对象常用方法 string对象比较方法: string类获取包含子串的方法: 字符串和数字的转换: String类 String对象是不可改变的,字符串一旦创建,内容不能再改变. 构造字符 ...

  4. Shell高级编程学习笔记(基础篇)

    目录 1.shell脚本的执行方法  2.shell的变量类型  3.shell特殊变量 4.变量子串的常用操作  5.批量修改文件名实践   6.变量替换 7.在shell中计算字符串长度的方法  ...

  5. Hard Negative Mning

    对于hard negative mining的解释,引用一波知乎: 链接:https://www.zhihu.com/question/46292829/answer/235112564来源:知乎 先 ...

  6. springboot系列二、springboot项目搭建

    一.官网快速构建 1.maven构建项目 1.访问http://start.spring.io/ 2.选择构建工具Maven Project.Spring Boot版本2.1.1以及一些工程基本信息, ...

  7. mysql锁表与不锁表设置主从复制的方法

    有时候MySQL主从同步不一致比较严重的时候,需要手动同步.先说说在锁表的情况下如何操作:以下是其简要过程 1.先对主库锁表FLUSH TABLES WITH READ LOCK; 2.备份数据mys ...

  8. 重装系统windows

    1 boot没有usb启动选项,驱动没加载好,先进入xp系统正确安装usb驱动,重启 2 file not fount bootmgr 用pe自带修复程序修复,修复驱动盘符为最小那个,非c盘 3 wi ...

  9. CCF2016093炉石传说(C语言版)

    问题描述 <炉石传说:魔兽英雄传>(Hearthstone: Heroes of Warcraft,简称炉石传说)是暴雪娱乐开发的一款集换式卡牌游戏(如下图所示).游戏在一个战斗棋盘上进行 ...

  10. C++ code:向量操作之添加元素

    读入一个文件aaa.txt的数据到向量中,文件中是一些整数(个数未知).要判断向量中的元素有多少个两两相等的数对. 代码如下: #include<iostream> #include< ...