Harbor仓库的搭建并实现harbor的高可用

Posted 屈宏志

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Harbor仓库的搭建并实现harbor的高可用相关的知识,希望对你有一定的参考价值。

 搭建Harbor仓库

一、安装 docker 

rm -rf /etc/yum.repos.d/*
#CentOS 7 安装docker依赖三个yum源:Base,Extras,docker-ce
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


yum clean all
yum -y install docker-ce
#启动Docker服务并设置开机自启
systemctl enable --now docker 
#查看docker版本
docker version

  

 

二、安装docker compose 

通过pip安装

yum -y install python3

pip3 install --upgrade pip
pip3 install docker-compose

  

三、下载Harbor安装包并解压缩 

 

wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.6.tgz
mkdir /apps

tar xvf harbor-offline-installer-v1.7.6.tgz -C /apps

  

 

四、修改harbor配置文件

 [root@Harbor1 ~]#vim /apps/harbor/harbor.cfg
#只需要修改下面两行
hostname = 192.168.18.71  #修改此行,指向当前主机IP 或 FQDN
harbor_admin_password = 123456 #修改此行指定harbor登录用户admin的密码,默认用户/密
码:admin/Harbor12345

  

五、运行harbor安装脚本

[root@Harbor1 ~]# /apps/harbor/install.sh

  

安装harbor后会自动开启很多相关容器

[root@Harbor1 ~] # docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e03e58e5dc0 goharbor/nginx-photon:v1.7.6 "nginx -g \'daemon of…" 13 seconds ago Up 12 seconds (health: starting) 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:4443->4443/tcp, :::4443->4443/tcp nginx
2364ac8789ae goharbor/harbor-portal:v1.7.6 "nginx -g \'daemon of…" 14 seconds ago Up 12 seconds (health: starting) 80/tcp harbor-portal
f440ce09e7c1 goharbor/harbor-jobservice:v1.7.6 "/harbor/start.sh" 14 seconds ago Up 12 seconds harbor-jobservice
fede4fceed84 goharbor/harbor-core:v1.7.6 "/harbor/start.sh" 15 seconds ago Up 13 seconds (health: starting) harbor-core
dff6b5c68d3c goharbor/harbor-adminserver:v1.7.6 "/harbor/start.sh" 16 seconds ago Up 14 seconds (health: starting) harbor-adminserver
01f192ad44d0 goharbor/harbor-db:v1.7.6 "/entrypoint.sh post…" 16 seconds ago Up 14 seconds (health: starting) 5432/tcp harbor-db
16e252af4e21 goharbor/redis-photon:v1.7.6 "docker-entrypoint.s…" 16 seconds ago Up 14 seconds 6379/tcp redis
1b863e398f01 goharbor/harbor-registryctl:v1.7.6 "/harbor/start.sh" 16 seconds ago Up 14 seconds (health: starting) registryctl
e0a62d3e51f8 goharbor/registry-photon:v2.6.2-v1.7.6 "/entrypoint.sh /etc…" 16 seconds ago Up 14 seconds (health: starting) 5000/tcp registry
77f844cb252b goharbor/harbor-log:v1.7.6 "/bin/sh -c /usr/loc…" 17 seconds ago Up 16 seconds (health: starting) 127.0.0.1:1514->10514/tcp harbor-log

  

六、登陆harbor的web页面,并创建项目

  • 用浏览器访问 http://192.168.18.71/
  • 用户名: admin

 

  • 密码: 123456  即前面harbor.cfg中指定的密码

 

 

 

 

七、命令行登录harbor并上传镜像到仓库

 

编辑/etc/docker/daemon.json,添加 "insecure-registries":["http://192.168.18.71"]

[root@Harbor1 ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://kroknwmp.mirror.aliyuncs.com"],
  "insecure-registries":["http://192.168.18.71"]
}
[root@Harbor1 ~]# systemctl restart docker 

命令行登陆harbor

[root@Harbor1 ~]# docker login  192.168.18.71
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

  

给本地镜像打标签并上传到harbor

修改 images 的名称,不修改成指定格式无法将镜像上传到 harbor 仓库

[root@centos7 ~]# docker tag alpine:latest 192.168.18.71/test/alpine:latest
[root@centos7 ~]# docker push 192.168.18.71/test/alpine:latest
The push refers to repository [192.168.18.71/test/alpine]
e2eb06d8af82: Pushed 
latest: digest: sha256:69704ef328d05a9f806b6b8502915e6a0a4faa4d72018dc42343f511490daf8a size: 528

  

访问harbor网站验证上传镜像成功

 

 

 

实现Harbor的高可用

 

Harbor支持基于策略的Docker镜像复制功能,这类似于mysql的主从同步,其可以实现不同的数据中
心、不同的运行环境之间同步镜像,并提供友好的管理界面,大大简化了实际运维中的镜像管理工作,
已经有用很多互联网公司使用harbor搭建内网docker仓库的案例,并且还有实现了双向复制功能

 

一、在另一台主机上搭建Harbor

参照上述步骤,在第二台主机上搭建Harbor

注意:

  • harbor.cfg中配置文件中 hostname 修改为本机地址
[root@Harbor2 ~]#vim /apps/harbor/harbor.cfg
hostname = 192.168.18.72  
harbor_admin_password = 123456 
  • 编辑/etc/docker/daemon.json,添加 "insecure-registries":["http://192.168.18.72"]
[root@Harbor2 ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://kroknwmp.mirror.aliyuncs.com"],
  "insecure-registries":["http://192.168.18.72"]
}

  

二、第二台harbor上新建项目


参考第一台harbor服务器的项目名称,在第二台harbor服务器上新建与之同名的项目

 

 

 

 

三、第二台harbor上仓库管理中新建目标


参考第一台主机信息,新建复制(同步)目标信息,将第一台主机设为复制的目标

 

 

输入第一台harbor服务器上的主机和用户信息

 

 

 

 

 

 

 四、第二台harbor上新建复制规则实现到第一台harbor的单向复制

 


在第二台harbor上建立复制的目标主机,即第一台harbor主机,将第二台harbor上面的镜像复制到第一台harbor

 

 

 

 

 

 

 

五、在第一台harbor主机上重复上面操作


以上操作,只是实现了从第二台harbor主机192.168.18.72到第一台harbor主机192.168.18.71的单向同步
在第一台harbor上再执行下面操作,才实现双向同步

 

 

 

 

 

 

六、确认同步成功


在第二台harbor主机上可以查看到从第一台主机同步过来的镜像

 

 

 

 

七、在第二台harbor上传镜像验证是否可以双向同步

[root@Harbor2 ~]# docker login 192.168.18.72
[root@Harbor2 ~]# docker tag httpd-busybox:v1.0 192.168.18.72/test/httpd-busybox:v1.0
[root@Harbor2 ~]# docker push 192.168.18.72/test/httpd-busybox:v1.0
The push refers to repository [192.168.18.72/test/httpd-busybox]
e5adc4f4e456: Pushed 
5b8c72934dfc: Pushed 
v1.0: digest: sha256:885a1ebcb2d75b3981abbe0167ba278705e4a1ba755db5ffef1c4dddf07ad999 size: 734

 

两台Harbor已实现双向同步

 

 

 

 



以上是关于Harbor仓库的搭建并实现harbor的高可用的主要内容,如果未能解决你的问题,请参考以下文章

构建docker高可用私有仓库基于Harbor开源系统

Helm部署Harbor,实现高可用的镜像仓库(超详细分享)~后附踩坑记录

Docker------搭建本地私有仓库及Horbor私有仓库

Docker------搭建本地私有仓库及Horbor私有仓库

Harbor 仓库使用介绍(高可用配置)

搭建harbor仓库LDAP认证