一、概述

Harbor 是一个企业级的云原生容器镜像仓库,由 VMware 开发并贡献给 Cloud Native Computing Foundation (CNCF)。它在传统的 Docker Registry 基础上进行了增强,提供了许多企业级功能,如安全、访问控制、镜像签名、漏洞扫描等。

主要功能

  1. 安全性与漏洞扫描
    • 集成 Clair 或 Trivy 等安全工具,自动扫描镜像中的安全漏洞,确保镜像的安全性。
    • 支持镜像签名和内容信任,确保镜像的完整性和可信度。
  2. 访问控制
    • 提供基于角色的访问控制(RBAC),确保不同用户在仓库中的操作权限得到精确控制。
    • 支持与 LDAP/AD 集成,实现统一的身份验证和权限管理。
  3. 镜像管理
    • 支持镜像的存储、分发和管理,包括镜像的上传、下载、删除等操作。
    • 提供镜像复制功能,支持跨多个 Harbor 实例或其他 Docker 注册表的镜像同步。
    • 支持垃圾回收和存储配额管理,优化存储资源。
  4. 多租户支持
    • 通过项目隔离机制,支持多租户环境下的镜像管理。
  5. Web 界面与 API
    • 提供直观的 Web 界面,方便用户进行镜像管理、项目管理、用户管理等操作。
    • 提供 RESTful API,支持自动化和集成,便于与 CI/CD 流水线对接。
  6. 高可用性
    • 支持多节点部署,确保镜像仓库的持续可用。

架构

Harbor 的架构分为三个主要层级:
  1. 数据访问层
    • K-V 存储:由 Redis 组成,提供数据缓存功能。
    • 数据库:存储用户、项目、权限等元数据,通常使用 PostgreSQL。
    • 对象存储:支持多种存储后端(如文件系统、S3、Ceph),用于存储实际的镜像层。
  2. 基础服务
    • 核心服务:处理用户身份验证、项目和镜像管理,以及任务调度。
    • Job Service:负责异步任务的处理,如镜像复制和漏洞扫描。
    • Notary:提供镜像签名和验证功能。
    • Clair/Trivy:负责镜像的安全漏洞扫描。
  3. Web UI
    • 提供用户友好的界面,方便用户进行镜像和项目的管理。

应用场景

  1. 容器化应用开发与部署
    • 开发人员可以将构建好的镜像推送到 Harbor 中进行存储和管理,运维人员可以从 Harbor 中拉取镜像部署到生产环境。
  2. 多环境镜像分发
    • 支持镜像在不同环境(如开发、测试、生产)之间的分发和同步,确保版本一致性。
  3. 容器镜像安全管理
    • 通过漏洞扫描和访问控制功能,确保镜像的安全性和合规性。
Harbor 为企业提供了全面的容器镜像管理解决方案,满足企业在安全性、可靠性和可扩展性方面的需求。
 

二、安装

前置条件

硬件

最低硬件要求

  • CPU:2核
  • 内存:4GB
  • 磁盘:40GB

推荐硬件配置

  • CPU:4核
  • 内存:8GB
  • 磁盘:160GB

软件

确保已经安装了docker,docker-compose,参考文档:https://www.cnblogs.com/xiao987334176/p/18809253

下载最新版本的安装包
https://github.com/goharbor/harbor/releases

下载最新在线安装包,得到文件harbor-offline-installer-v2.12.2.tgz
解压文件

cd /data/
tar zxvf harbor-offline-installer-v2.12.2.tgz

复制配置文件

cd harbor/
cp harbor.yml.tmpl harbor.yml

修改以下配置,主要修改端口,证书,数据目录

hostname: harbor.qq.com
http:
port: 8082
https:
port: 8083
# The path of cert and key files for nginx
certificate: /data/harbor/cert/qq.com.pem
private_key: /data/harbor/cert/qq.com.key # The default data volume
data_volume: /data/harbor

参数说明:

hostname,访问主机名,必须要设置,否则无法安装

http,设置http访问的端口,由于端口被占用了,所以改成了8082

https,设置https访问的端口,由于端口被占用了,所以改成了8083

certificate,private_key,这2个是配置SSL证书的。因为公司花钱买了通配符的SSL证书,能匹配所有域名,直接拿来用了。

如果你没有SSL证书,可以不做配置,把https部分注释掉即可。

data_volume,数据存放目录,建议放到一个比较大的磁盘空间里面。

本地安装

bash prepare
bash install.sh

安装完成后在本地生成docker-compose.yml文件,此时可以启动harbor服务;

docker-compose up -d

访问域名
https://harbor.qq.com:8083/
初始的默认用户是admin,密码是Harbor12345

登录之后,可以修改密码。

登录之后效果如下:

三、使用

项目

新建一个项目,比如dify

 访问级别,如果勾选公开,那么所有人可以在不登录的情况下,下载镜像。慎重选择,这里不勾选。

用户

一般,我们会创建一个普通用户,来进行镜像的下载和上传。 而不是直接用管理员账户admin

点击用户管理,创建用户

创建一个用户devops,注意密码必须符合密码复杂性要求的

如果设置密码比较纠结,可以找一个在线生成的,比如:https://www.strongpasswordgenerator.org/zh-cn/

进入项目dify,添加成员

添加成员devops,设置为项目管理员

四、镜像推送

首先修改docker配置/etc/docker/daemon.json,增加harbor地址

"insecure-registries": ["harbor.qq.com:8083"]

修改完成后,重启docker

systemctl restart docker

比如将nginx镜像推送到项目dify

先登录到harbor

# docker login harbor.qq.cn:8083
user:devops
password:
Login Succeeded

下载nginx镜像

docker pull nginx:latest

推送镜像

docker tag nginx:latest harbor.qq.com:8083/dify/nginx:latest
docker push harbor.qq.com:8083/dify/nginx:latest

查看镜像是否存在

五、镜像清理

比如java项目经常更新迭代,那么harbor里面会产生很多镜像。运行半年以上,可能harbor磁盘就会达到100G以上甚至更大。

但是一般情况下,很多很早的镜像,没有必要存储,需要进行清理。比如:保留最近推送的10个镜像。

harbor提供镜像清理策略,进入项目策略,添加规则

保留最近推送的10个镜像

添加定时器

设置为每周执行

注意:项目里面的清理策略,删除的镜像会在回收站里面,所以还需要在回收站里面,进行彻底删除。

点击清理服务,设置为每周

这样,镜像就会彻底清理了,释放磁盘空间!

 

ubuntu 22.04安装harbor的更多相关文章

  1. Ubuntu 22.04 安装 utools 时的疑难杂症

    Error: libcrypto.so.1.1 原因:libcrypto.so.1.1 该依赖的版本不对,ubuntu 默认是使用的 openssl3 的依赖 这个是 openssl1 的 wget ...

  2. Ubuntu 22.04 安装搜狗输入法

    下载搜狗输入法 下载地址https://shurufa.sogou.com/linux 也可以命令下载 wget https://ime.sogouimecdn.com/202212182151/3b ...

  3. Ubuntu 22.04 安装 VMWare 16.2.3 后无法启动

    异常日志: 2022-06-13T03:49:56.019Z In(05) host-29676 In file included from /tmp/modconfig-XR2GVI/vmmon-o ...

  4. ubuntu 22.04安装多个gcc

    sudo apt install gcc-9 g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 - ...

  5. Ubuntu 22.04 安装 VMware Tools

    VM 下的 install VMWare Tools 终端下载 VMware Tools sudo apt install open-vm-tools-desktop -y reboot

  6. Ubuntu 22.04 LTS 安装 0.A.D 实时策略游戏 并汉化

    众所周知,Linux生态中,能玩的正儿八经的大型游戏其实没几个,而 0.A.D 这个游戏就是这其中之一.这是一个类似于帝国时代的实时策略游戏,开源跨平台,这是其官方网站:https://play0ad ...

  7. Ubuntu 18.04 安装MySQL

    最近在写东西的时候,需要用到MySQL,在网上查了一下,都说Ubuntu18.04不能安装MySQL5.7.22, 总觉的不可能,所以自己就研究了一下,然后分享给大家 工具/原料   VMware W ...

  8. Ubuntu 18.04 安装博通(Broadcom)无线网卡驱动

    目录 Ubuntu 18.04 安装博通(Broadcom)无线网卡驱动 Package gcc is not configured yet. 解决办法 history history | grep ...

  9. Ubuntu 18.04安装MongoDB 4.0(社区版)

    Ubuntu 18.04(虚拟机VirtualBox上),MongoDB 4.0, 听室友说,23点有世界杯决赛呢!可是,孤要写博文的啊!以记录这忙乱的下午和晚间成功安装了一个软件到Linux上.—— ...

  10. Ubuntu 16.04 安装 Wireshark分析tcpdump的pcap包——sudo apt install wireshark-qt

    tcpdump 的抓包保存到文件的命令参数是-w xxx.cap   抓eth1的包  tcpdump -i eth1 -w /tmp/xxx.cap    抓 192.168.1.123的包  tc ...

随机推荐

  1. 阿里云-数据库-表格存储Tablestore

    入门篇一 初步调研了解 Step.1 场景锲合度判断选择使用表格存储前关键需要明确你的场景是否适合.表格存储是阿里云自2010起自研使用的一个多模型NoSQL数据库,面向海量大数据存储,身经百战.非常 ...

  2. 【Git】---工作区、暂存区、版本库、远程仓库

    工作区.暂存区.版本库.远程仓库 一.概念 1.四个工作区域 Git本地有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或 ...

  3. dicom 在生成dcm文件的时候会出现乱码的处理方法

    using Dicom.IO; using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  4. 异常try-catch-finally与存储和JSON.parse

    捕获异常 捕获异常:处理可能出现的异常,当发生错误后,我们对它进行处理,不让程序崩溃. 异常处理 try-catch-finally try{ // 可能出现异常的:代码1 }catch(err){ ...

  5. mysql事务中使用临时表

    最近在使用存储过程完成晚上数据的定时汇总功能,其中需要在存储过程中启用事务,但是发现使用了create table语句后事务会自动提交这个语句前的语句,即便是这个语句后发生了错误进行了回滚. 测试语句 ...

  6. 第4章 C#的高级特性

    第4章 C#的高级特性 4.1 委托 4.1.2 多播委托 对值为 null 的委托变量进行 + ​或 += ​操作,等价于为变量指定一个新值: SomeDelegate d = null; d += ...

  7. Python基于自定义方法的排序

    Python基于自定义方法的排序 在Python中,排序是一个常见的任务,它可以帮助我们根据特定的规则对数据结构(如列表)中的元素进行排序.Python的内置排序方法,如列表的sort()函数和内置函 ...

  8. VMware常用操作

    VMware常用操作 VMware作为一款功能强大的虚拟化软件,为用户提供了一个灵活.高效的虚拟环境.在日常使用中,掌握VMware的常用操作对于提高工作效率.优化资源配置至关重要.以下将详细介绍VM ...

  9. 『玩转Streamlit』--会话状态管理

    在Web应用开发中,会话管理是一个至关重要的概念,它能够帮助开发者追踪用户在应用中的行为和状态,从而为用户提供更加个性化.连贯且高效的交互体验. Streamlit作为一个简单而强大的用于快速构建和部 ...

  10. AI-介绍

    前言 AI的发展已是如火如荼,从GPT问世的大火到入金各个互联网那个龙头企业的入局,AI的使用已是简单快捷,本篇文章主要记录大语言模型的基本情况和一些使用的条件. 什么是AI 人工智能是个很广泛的话题 ...