前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >012.Docker私有仓库多Harbor同步部署

012.Docker私有仓库多Harbor同步部署

作者头像
木二
发布于 2019-07-26 06:25:53
发布于 2019-07-26 06:25:53
2.6K00
代码可运行
举报
文章被收录于专栏:木二天空木二天空
运行总次数:0
代码可运行

一 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解析:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  1 172.24.8.111 reg.harbor01.com
  2 172.24.8.112 reg.harbor02.com

2.1 主从节点部署Harbor

部署方法可参考《011.Docker仓库管理》部署。

提示:主从节点都必须部署Harbor,本实验采用http形式,只需要修改hostname为对应的域名即可。

注意:Job services主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上。因此若采用域名配置,则需要在jobservice的hosts中添加主从解析,为方便修改,可将使用以下脚本快速在所有容器hosts添加相应解析:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  1 root@docker02:~/harbor# cat addhosts.sh
  2 #!/bin/sh
  3 #****************************************************************#
  4 # ScriptName: test.sh
  5 # Author: xhy@itzgr.com
  6 # Create Date: 2018-10-27 15:48
  7 # Modify Author: xhy@itzgr.com
  8 #***************************************************************#
  9 docker ps | awk '{print $1}'>./dockerlist.txt
 10 for id in `cat ./dockerlist.txt`
 11 do
 12     HOSTS=`docker inspect $id | grep hosts | awk -F "\"" '{print $4}'`
 13     echo -e "172.24.8.111 reg.harbor01.com\n172.24.8.112 reg.harbor02.com" >> $HOSTS
 14 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 客户端测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  1 root@docker03:~# vi /etc/hosts
  2 172.24.8.111 reg.harbor01.com
  3 172.24.8.112 reg.harbor02.com
  4 root@docker03:~# vi /etc/docker/daemon.json
  5 {
  6     "insecure-registries": ["http://reg.harbor01.com","http://reg.harbor02.com"]
  7 }
  8 root@docker03:~# systemctl daemon-reload
  9 root@docker03:~# systemctl restart docker.service
 10 root@docker03:~# docker login reg.harbor01.com		#登录registry
 11 Username: admin
 12 Password:

提示:公开的registry可pull,但push也必须登录,私有的registry必须登录才可pull和push。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  1 root@docker03:~# docker pull hello-world
  2 root@docker03:~# docker tag hello-world:latest reg.harbor01.com/copyregistry/hello-world:xhy
  3 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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 Harbor主从介绍
  • 二 Harbor主从部署
    • 2.1 前期准备
    • 2.1 主从节点部署Harbor
    • 2.2 主节点测试
    • 2.3 创建用于复制的测试项目
    • 2.4 仓库管理新建从目标
    • 2.5 创建复制策略
    • 2.6 docker 客户端测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档