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端可以看到复制过来的镜像

相关推荐
GeW13 小时前
新质生产力路线图Linux、数据库、国产化替代一次讲透
linux
aningx15 小时前
cachyos 从 GRUB 切换到 rEFInd
linux
第404号工位16 小时前
40块钱二手瘦客户端,如何跑满家庭物联网中枢?(拒绝Docker爆盘实录)
linux·架构·node.js
骑着蜗牛撵大象32718 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
众壹新能源科技18 小时前
逆变器自带无功不够用,加装5MVar SVG后功率因数从0.85回到0.99
运维·人工智能·自动化
..Dauntless..18 小时前
【Linux】一切皆文件和缓冲区
linux·运维·服务器
QMCY_jason18 小时前
x86 ubuntu2204 无gui 安装 openeuler 2203 aarch64版本
linux·运维·服务器
重生之小比特18 小时前
【Linux系统】12 进程程序替换 自定义Shell 命令行解释器
linux·运维·服务器
考拉讲支付18 小时前
母婴亲子服务平台分账架构设计:多场景多方分账与合规清结算实践
大数据·运维·人工智能·微信小程序·架构·微信公众平台
xier_ran18 小时前
【infra之路】AI 编译器学习笔记(十三):AI 编译器全景——TVM、XLA、IREE 与其他
人工智能·笔记·学习