一 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. django(二)中间件与面向切面编程

    一.中间件概念 django 自带函数可以在几个环节调节收到请求.处理请求.处理异常.以及发送请求. 看这里给的链接好了,这是一个大佬的讲django中间件的博客,非常清楚:https://www.c ...

  2. linux bash的重定向

    cnblogs原创 下面几种bash重定向各表示什么意思? find / -name passwd > /dev/null >& > /dev/null find / -na ...

  3. BroadcastReceiver的两种注册方式和使用

    1.静态注册,在minifest文件中 <receiver android:name=".BroadcastReceiverDemo" > <intent-fil ...

  4. Java的IO流——(七)

    目录结构:

  5. Ubuntu 分辨率显示出错,分辨率不是最佳分辨率的解决办法

    本文为转载,但在Ubuntu16.04LTS下亲测有效. (1)首先使用 xrandr 命令列出当前所能检测到的分辨率,如一台显示器,最佳分辨率为 1440x900(我的显示器尽量设置1680x105 ...

  6. Vue.js——常用的指令

    1.v-on:指令监听DOM事件,并在触发时运行一些javaScript代码. <div id='myView'> <img src="img/se.png" v ...

  7. centos6.5环境下svn服务器和客户端配置实用详解

    一.服务器端配置 安装 # yum install -y subversion yum安装软件,不清除软件包的方法 # vim /etc/yum.conf keepcache=0 建立svn版本库数据 ...

  8. linux网络设备驱动

    Linux网络设备驱动 Linux网络驱动程序的体系结构可划分为4个层次.Linux内核源代码中提供了网络设备接口及以网络子系统的上层的代码,移植特定网络硬件的驱动程序的主要工作就是完成设备驱动功能层 ...

  9. Expm 7_2区间调度问题

    [问题描述] 给定n个活动,其中的每个活动ai包含一个起始时间si与结束时间fi.设计与实现算法从n个活动中找出一个最大的相互兼容的活动子集S. 要求:分别设计动态规划与贪心算法求解该问题.其中,对贪 ...

  10. java控制语句 if-else while do-while for return break continue goto switch default

    if for //: object/ForEachFloat.java package object; import java.util.Random; public class ForEachFlo ...