Linux学习25-harbor私有仓库部署

harbor 企业级私有仓库

简介

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能

安装harbor

删除之前部署的registry,不然会冲突

bash 复制代码
[root@server1 ~]# docker rm -f registry

部署证书

bash 复制代码
[root@server1 ~ ]# mkdir /data
[root@server1 ~ ]# cp -r certs /data
bash 复制代码
[root@server1 ~]# tar zxf harbor-offline-installer-v2.14.0.tgz
[root@server1 ~]# cd harbor/
[root@server1 harbor]# cp harbor.yml.tmpl harbor.yml
[root@server1 harbor]# vim harbor.yml
hostname: reg.westos.org

http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /data/certs/westos.org.crt
  private_key: /data/certs/westos.org.key

...
harbor_admin_password: westos

部署harbor

bash 复制代码
[root@server1 harbor]# ./install.sh  --with-trivy


备注:

prepare 脚本是 Harbor 部署的 "预处理器",通过解析配置、生成运行时文件、验证环境依赖,将用户的抽象配置转化为可直接启动的容器编排规则,是连接配置与实际运行的关键步骤。

使用场景

prepare 脚本通常在以下阶段执行:

  • 首次部署 Harbor 前,执行 ./prepare 生成初始配置
  • 修改 harbor.yml 后,需重新执行 ./prepare 使配置生效(会更新 docker-compose.yml 及相关文件)
  • 升级 Harbor 版本时,用于适配新配置并生成兼容的启动文件

查看镜像

查看启动的容器

浏览器访问,会提示不安全,继续前往

用户名admin,密码westos

成功进入

harbor使用

登录仓库


给镜像打标签

root@server1 \~# docker tag busybox:latest reg.westos.org/library/busybox:latest

root@server1 \~# docker tag nginx:latest reg.westos.org/library/nginx:latest

上传镜像

root@server1 \~# docker push reg.westos.org/library/nginx:latest

root@server1 \~# docker push reg.westos.org/library/busybox:latest


配置默认仓库

root@server2 \~# vim /etc/docker/daemon.json

{

"registry-mirrors": "https://reg.westos.org"

}

root@server2 \~# systemctl restart docker

library项目中的镜像下载时可以直接写镜像名称

root@server2 \~# docker pull nginx

公共仓库支持匿名拉取


创建私有仓库

新建用户

授权维护私有仓库

私有仓库上传下载都需要认证,并且还要指定仓库域名

root@server1 \~# docker tag ubuntu:latest reg.westos.org/westos/ubuntu:latest

root@server1 \~# docker push reg.westos.org/westos/ubuntu:latest

root@server2 \~# docker login reg.westos.org

Username: wxh

Password: ***

root@server2 \~# docker pull reg.westos.org/westos/ubuntu

Harbor复制同步

在大规模集群环境下,如果所有 Docker 主机都从一个镜像仓库中拉取镜像,那么此镜像仓库很可能会成为镜像分发的瓶颈,影响镜像分发的速度。可以通过搭建多个镜像仓库并配合使用远程复制功能,解决这一问题

如下图所示,图中的镜像仓库分为两级:主仓库和子仓库。在主仓库和子仓库之间配置了远程复制策略。当一个应用镜像被推送到主仓库后,根据所配置的复制策略,镜像可以立即被分发到其他子镜像仓库。集群中的Docker 主机就可以就近在其中任意一个子仓库中拉取所需的镜像,减轻主仓库的压力

push 推送模式

在第二台虚拟机docker2上也部署harbor,将配置文件中的hostname更换为slave.westos.org,

解析中在docker2后加上slave.westos.org

也需要生成认证

最后在浏览器访问

回到201进行新建仓库

将主仓库作为推送端,目标设置为slave仓库,取消验证远程证书

成功创建


创建复制推送规则,复制策略支持推送和拉取两种方式。推送是指将当前 Harbor实例的Artifact(制品)复制到远程 Artifact 仓库服务下;拉取是指将其他Artifact 仓库服务中的Artifact 复制到当前 Harbor 实例中

Harbor针对 Artifact的不同属性支持 4 种过滤器,分别是名称过滤器、Tag 过滤器、标签过滤器、资源过滤器

这里我们选择远程推送所有项目下的所有镜像到 Docker Compose部署的 Harbor 中。触发模式为事件驱动,一旦有镜像推送到 Harbor中,就会立即推送到远程仓库中

手动尝试复制

成功


上传镜像测试触发复制

成功触发复制

点击id可以查看详情

在slave端可以看到复制过来的镜像

相关推荐
楚山之石12 小时前
【Nat Biomed Eng】Connectome 2.0 超高梯度扫描仪:500 mT/m 与 600 T/m/s 把活体人脑微观结构分辨推进到亚微米级
图像处理·学习·数据分析·mri
坤坤子吖15 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
AI_Gump15 小时前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
星恒随风17 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
少司府17 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
无足鸟ICT17 小时前
【RHCA+】IO调度算法
linux·服务器
打工仔折腾 AI18 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
wacsii18 小时前
【Linux进程(四)】命令行参数与环境变量
linux·服务器
无奈笑天下18 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
fengkai454518 小时前
Prometheus+K8s弹性伸缩综合项目
运维·kubernetes·k8s·prometheus·hpa·vpa