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

 搭建Harbor仓库

一、安装 docker 

    #配置Docker源

yum install -y yum-utils yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
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

或者:

使用curl将 Compose 文件下载到/usr/local/bin目录:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#添加可执行权限
chmod +x /usr/local/bin/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" ]
}

命令行登陆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已实现双向同步

 

 

 

 



posted @ 2021-08-28 23:44  屈宏志  阅读(2722)  评论(0编辑  收藏  举报