实现harbor的高可用
#环境准备:
第一台主机:ubuntu harbor1 10.0.0.151
第二台主机:centos7 harbor2 10.0.0.152
1.安装docker
#见上一次作业
2.harbor以来docker compose,所以先安装docker compose
方法1:通过pip安装
[root@Harbor1 ~] #yum -y install python3
[root@Harbor1 ~] #pip3 install --upgrade pip
[root@Harbor1 ~] #pip3 install docker-compose
方法2:下载程序(此方法更快)
[root@Harbor1 ~] #curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#添加可执行权限
[root@Harbor1 ~] #chmod +x /usr/local/bin/docker-compose
3.下载Harbor安装包并解压缩
[root@Harbor1 ~] #wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.6.tgz
[root@Harbor1 ~] #mkdir /apps
[root@Harbor1 ~] #tar xvf harbor-offline-installer-v1.7.6.tgz -C /apps
4.修改harbor配置文件
[root@Harbor1 ~] #vim /apps/harbor/harbor.cfg
#只需要修改下面两行
hostname = 10.0.0.151 #修改此行,指向当前主机IP 或 FQDN
harbor_admin_password = 123456 #修改此行指定harbor登录用户admin的密码
5.运行harbor安装脚本
[root@Harbor1 ~] # /apps/harbor/install.sh
#centos7没问题。但是ubuntu因为没有/usr/bin/python文件,运行/apps/harbor/install.sh会报错。拉不起容器。这里通过创建软链接解决
/apps/harbor/install.sh: ./prepare: /usr/bin/python: bad interpreter: No such file or directory
[root@Harbor1 ~] # ln -s /usr/bin/python3.6 /usr/bin/python
#查看相关容器
[root@Harbor1 ~] # docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b3a907af0c50 goharbor/nginx-photon:v1.7.6 "nginx -g 'daemon of…" 8 seconds ago Up 7 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
2156c970ccc1 goharbor/harbor-jobservice:v1.7.6 "/harbor/start.sh" 10 seconds ago Up 9 seconds harbor-jobservice
301fa9b3b260 goharbor/harbor-portal:v1.7.6 "nginx -g 'daemon of…" 10 seconds ago Up 8 seconds (health: starting) 80/tcp harbor-portal
44d513fc24a1 goharbor/harbor-core:v1.7.6 "/harbor/start.sh" 12 seconds ago Up 10 seconds (health: starting) harbor-core
bccd0ee05b52 goharbor/harbor-db:v1.7.6 "/entrypoint.sh post…" 16 seconds ago Up 12 seconds (health: starting) 5432/tcp harbor-db
8c636669ec89 goharbor/harbor-registryctl:v1.7.6 "/harbor/start.sh" 16 seconds ago Up 11 seconds (health: starting) registryctl
7a1ad24b012a goharbor/redis-photon:v1.7.6 "docker-entrypoint.s…" 16 seconds ago Up 14 seconds 6379/tcp redis
0f0e1ac82fad goharbor/harbor-adminserver:v1.7.6 "/harbor/start.sh" 16 seconds ago Up 13 seconds (health: starting) harbor-adminserver
a5fd2b4c2860 goharbor/registry-photon:v2.6.2-v1.7.6 "/entrypoint.sh /etc…" 16 seconds ago Up 12 seconds (health: starting) 5000/tcp registry
f7c1a8e06c63 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
6.登陆harbor的web页面,并创建项目test(公开)
用浏览器访问 http://10.0.0.151/
用户名: admin
密码: 123456 即前面harbor.cfg中指定的密码
7.命令行登录harbor并上传镜像到仓库
#修改docker服务文件
[root@Harbor1 ~] # grep ExecStart /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 10.0.0.151 --insecure-registry 10.0.0.152
#命令行登陆harbor
root@harbor1:~# docker login 10.0.0.151
Username: admin
Password: 123456
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 10.0.0.151/test/alpine:latest
[root@centos7 ~] # docker push 10.0.0.151/test/alpine:latest
#最后访问harbor网站验证上传镜像成功
8.实现Harbor的高可用
#Harbor支持基于策略的Docker镜像复制功能,这类似于MySQL的主从同步,其可以实现不同的数据中心、不同的运行环境之间同步镜像,并提供友好的管理界面,大大简化了实际运维中的镜像管理工作,已经有用很多互联网公司使用harbor搭建内网docker仓库的案例,并且还有实现了双向复制功能
8.1.在另一台主机上搭建Harbor
#参照上述步骤,在第二台主机上搭建Harbor
#harbor.cfg中配置文件中 hostname 修改为本机地址,其他步骤相同
8.2.第二台harbor上新建项目
#参考第一台harbor服务器的项目名称,在第二台harbor服务器上新建与之同名的项目test(公开)
8.3.第二台harbor上仓库管理中新建目标
#参考第一台主机信息,新建复制(同步)目标信息,将第一台主机设为复制的目标。
#登录管理网页,点击系统管理--仓库管理--新建目标。输入第一台harbor服务器上的主机和用户信息,目标名:test,目标url:http://10.0.0.151,用户名:admin,密码:123456
8.4.二台harbor(10.0.0.152)上新建复制规则实现到第一台harbor的单向复制
#在第二台harbor上建立复制的目标主机,即第一台harbor主机
#登录管理网页,点击系统管理--复制管理--新建规则,名称:test,源项目:test,目标:test-http://10.0.0.151,出发模式:即刻,勾选“删除本地镜像的同时也删除远程的镜像”和“立即复制现有的镜像”。
8.5.在第一台harbor(10.0.0.151)上重复上面操作
#以上操作,只是实现了从第二台harbor主机10.0.0.152到第一台harbor主机10.0.0.151的单向同步在第一台harbor上再执行下面操作,才实现双向同步
#登录管理网页,点击系统管理--仓库管理--新建目标。输入第二台harbor服务器上的主机和用户信息,目标名:test,目标url:http://10.0.0.152,用户名:admin,密码:123456
#登录管理网页,点击系统管理--复制管理--新建规则,名称:test,源项目:test,目标:test-http://10.0.0.152,出发模式:即刻,勾选“删除本地镜像的同时也删除远程的镜像”和“立即复制现有的镜像”。
8.6.确认同步成功
#管理网页,项目中,在第二台harbor主机上可以查看到从第一台主机同步过来的镜像
8.7.在第二台harbor上传镜像验证是否可以双向同步
[root@Harbor2 ~] # docker login 10.0.0.152
[root@Harbor2 ~] # docker tag busybox:latest 10.0.0.152/test/busybox
[root@Harbor2 ~] # docker push 10.0.0.152/test/busybox
#在两台主机的管理网页中已经可以看到镜像同步了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具