Harbor简介

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

当我们企业企业机器容器众多,一台harbor上传下载导致效率低下的时候,这个时候可以增加机器,做到harbor的双向同步,当然也可以通过反向代理服务从而来实现真正的harbor高可用。

实战案例:两台harbor数据同步后通过haproxy来做反向代理

安装需要两个必要条件,安装docker  还需要安装另个工具docer-compose    然后才能安装harbor
首先安装好两台harbor,实现镜像的上传和下载都通过haproxy的地址调度,
实现上传和下载镜像通过负载均衡器就达到目的,就算挂了一台harbio  
负载均衡器依然可以调度到另一台机器
#两台harbor安装 步骤一样   
#docer-compose 安装
wget https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
[15:00:38 root@docker apps]#chmod a+x docker-compose-Linux-x86_64 
[15:01:09 root@docker apps]#cp docker-compose-Linux-x86_64 /usr/bin/docker-compose
[15:01:46 root@docker apps]#docker-compose version
#harbor安装
#wget https://github.com/goharbor/harbor/releases/download/v2.2.3/harbor-offline-installer-v2.2.3.tgz
[15:02:46 root@docker apps]#tar xvf  harbor-offline-installer-v2.2.3.tgz
[15:03:46 root@docker apps]# cd harbor/
[15:04:46 root@docker apps]# cp harbor.yml.tmpl harbor.yml
[15:05:46 root@docker apps]#vim harbor.yml 把hostanem修改本机IP然后注释https下面四行语句,找到password  修改为自己想要的密码,作为登录web的界面
[13:16:45 root@ubuntu1804 harbor]#./install.sh --with-trivy

#另外一台harbor安装也一样,安装好之后我们输入IP就可以进入图形化界面,
创建自己的项目,在两台机器上分别选择仓库管理和复制管理,
做到harbor的双向同步

#在找一台机器作为haproxy做两台harbor的代理
[13:19:57 root@docker harbor]#sudo apt install haproxy
[root@localhost ~]# systemctl restart haproxy;systemctl enable --now haproxy
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
listen harbor-80
    bind 10.0.0.81:80
    mode tcp
    balance source
    server 10.0.0.8 10.0.0.8:80 check inter 3s fall 3 rise 5
    server 10.0.0.18 10.0.0.18:80 check inter 3s fall 3 rise 5 
#ss -ntl 查看已经监听在80端口了

#找一台有docker的服务器,然后开始测试,需要以下配置
[13:19:57 root@docker harbor]#vim /lib/systemd/system/docker.service 
在ExecStart=结尾处添加  --insecure-registry 10.0.0.8#haproxy的IP,启动docker
[13:32:25 root@ubuntu1804 harbor]#docker login 10.0.0.8
#登录成功之后就可以通过haproxy代理去上传下载镜像了,就算挂了一台harbor依然可以通过访问另一台的harbor,上传下载
[13:34:47 root@ubuntu1804 harbor]#docker push 10.0.0.8/m44/ubuntu-nginx-v1