ubuntu 22.04安装harbor的详细过程

 更新时间:2025年04月30日 09:23:43   作者:肖祥  
Harbor是一个企业级的云原生容器镜像仓库,由 VMware 开发并贡献给 Cloud Native Computing Foundation (CNCF),它在传统的 Docker Registry 基础上进行了增强,提供了许多企业级功能,这篇文章主要介绍了ubuntu 22.04安装harbor,需要的朋友可以参考下

一、概述

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

主要功能

  • 安全性与漏洞扫描

    • 集成 Clair 或 Trivy 等安全工具,自动扫描镜像中的安全漏洞,确保镜像的安全性。

    • 支持镜像签名和内容信任,确保镜像的完整性和可信度。

  • 访问控制

    • 提供基于角色的访问控制(RBAC),确保不同用户在仓库中的操作权限得到精确控制。

    • 支持与 LDAP/AD 集成,实现统一的身份验证和权限管理。

  • 镜像管理

    • 支持镜像的存储、分发和管理,包括镜像的上传、下载、删除等操作。

    • 提供镜像复制功能,支持跨多个 Harbor 实例或其他 Docker 注册表的镜像同步。

    • 支持垃圾回收和存储配额管理,优化存储资源。

  • 多租户支持

    • 通过项目隔离机制,支持多租户环境下的镜像管理。

  • Web 界面与 API

    • 提供直观的 Web 界面,方便用户进行镜像管理、项目管理、用户管理等操作。

    • 提供 RESTful API,支持自动化和集成,便于与 CI/CD 流水线对接。

  • 高可用性

    • 支持多节点部署,确保镜像仓库的持续可用。

架构

Harbor 的架构分为三个主要层级:

  • 数据访问层

    • K-V 存储:由 Redis 组成,提供数据缓存功能。

    • 数据库:存储用户、项目、权限等元数据,通常使用 PostgreSQL。

    • 对象存储:支持多种存储后端(如文件系统、S3、Ceph),用于存储实际的镜像层。

  • 基础服务

    • 核心服务:处理用户身份验证、项目和镜像管理,以及任务调度。

    • Job Service:负责异步任务的处理,如镜像复制和漏洞扫描。

    • Notary:提供镜像签名和验证功能。

    • Clair/Trivy:负责镜像的安全漏洞扫描。

  • Web UI

    • 提供用户友好的界面,方便用户进行镜像和项目的管理。

应用场景

  • 容器化应用开发与部署

    • 开发人员可以将构建好的镜像推送到 Harbor 中进行存储和管理,运维人员可以从 Harbor 中拉取镜像部署到生产环境。

  • 多环境镜像分发

    • 支持镜像在不同环境(如开发、测试、生产)之间的分发和同步,确保版本一致性。

  • 容器镜像安全管理

    • 通过漏洞扫描和访问控制功能,确保镜像的安全性和合规性。

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的详细过程的文章就介绍到这了,更多相关ubuntu 安装harbor内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker CPU限制的实现

    docker CPU限制的实现

    这篇文章主要介绍了docker CPU限制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 解决docker run 或者 docker restart 启动镜像就自动退出

    解决docker run 或者 docker restart 启动镜像就自动退出

    这篇文章主要介绍了解决docker run 或者 docker restart 启动镜像就自动退出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker运行镜像以及退出、删除容器的实现方式

    Docker运行镜像以及退出、删除容器的实现方式

    这篇文章主要介绍了Docker运行镜像以及退出、删除容器的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • 在 Ubuntu 下通过 Docker 部署 Mastodon 服务器的步骤

    在 Ubuntu 下通过 Docker 部署 Mastodon&nbs

    在Ubuntu系统上通过Docker部署Mastodon服务器的步骤,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-03-03
  • Docker与Golang的巧妙结合

    Docker与Golang的巧妙结合

    这篇文章主要介绍了Docker与Golang的巧妙结合的相关资料,需要的朋友可以参考下
    2016-10-10
  • Docker 解决容器时间与主机时间不一致的问题三种解决方案

    Docker 解决容器时间与主机时间不一致的问题三种解决方案

    这篇文章主要介绍了Docker 解决容器时间与主机时间不一致的问题的相关资料,这里提供了三种方法,供大家参考,需要的朋友可以参考下
    2016-12-12
  • docke自定义网络之容器互联

    docke自定义网络之容器互联

    大家好,本篇文章主要讲的是docke自定义网络之容器互联,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Docker Base Image自己创建具体实现

    Docker Base Image自己创建具体实现

    这篇文章主要介绍了Docker Base Image创建具体实现的相关资料,这里提供了详细的具体步骤,需要的朋友可以参考下
    2016-11-11
  • Docker使用Swarm组建集群的方法

    Docker使用Swarm组建集群的方法

    Docker 使用 Swarm 可以很方便的在多个主机上创建容器集群,并且容器之间可以跨主机网络通信。这篇文章主要介绍了Docker使用Swarm组建集群,需要的朋友可以参考下
    2017-11-11
  • 使用docker搭建go环境的简单步骤

    使用docker搭建go环境的简单步骤

    最近公司里面的项目用到了Docker,正好准备学习下Golang,所以就学习Golang顺便也学习下Docker怎么用的,刚好从头开始配置下环境,这篇文章主要给大家介绍了关于使用docker搭建go环境的简单步骤,需要的朋友可以参考下
    2023-10-10

最新评论