当前位置: 首页 > article >正文

Docker 私有仓库 Harbor 详解

1. 什么是 Harbor?

Harbor 是一个开源的 Docker 镜像仓库管理平台,旨在提供更强大的企业级功能,支持私有 Docker 镜像仓库的管理。Harbor 为 Docker 提供了集中式的镜像管理服务,支持用户和权限管理、镜像版本控制、安全扫描、LDAP 集成等功能,是 Docker 镜像管理的最佳选择之一,特别适合需要高安全性、可扩展性的生产环境。

Harbor 的主要特点

  • 企业级安全性:提供镜像扫描、安全策略控制,保证镜像的安全性。
  • 支持多种认证方式:包括 LDAP、AD 和用户认证。
  • 高可用性和扩展性:支持分布式部署和高可用配置。
  • 支持多种镜像格式:不仅支持 Docker 镜像,也支持 Helm charts、OCI 镜像等。
  • 权限管理:细粒度的权限管理,可以定义不同的项目、用户及访问权限。
  • 镜像复制:支持镜像在不同 Harbor 实例之间的同步和复制。

Harbor 作为私有 Docker 仓库的解决方案,通常用于公司或团队内部的镜像管理,能够提供更多的控制和安全性。


2. Harbor 的部署与安装

2.1 部署 Harbor 的系统要求

在部署 Harbor 之前,确保系统满足以下基本要求:

  • 操作系统:Linux 系统(如 CentOS、Ubuntu 等)。
  • Docker:Harbor 需要 Docker 进行容器化部署。
  • Docker Compose:Harbor 使用 Docker Compose 来编排多个服务。
  • 存储:确保有足够的磁盘空间来存储 Docker 镜像。

2.2 安装 Docker 和 Docker Compose

  1. 安装 Docker

    sudo apt update
    sudo apt install docker.io
    
  2. 安装 Docker Compose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    

2.3 获取 Harbor 安装包

从 Harbor 官方 GitHub 页面下载最新的安装包:

wget https://github.com/goharbor/harbor/releases/download/v2.3.3/harbor-offline-installer-v2.3.3.tgz

2.4 解压并配置 Harbor

  1. 解压安装包:

    tar -zxvf harbor-offline-installer-v2.3.3.tgz
    cd harbor
    
  2. 配置 Harbor:
    Harbor 提供了一个配置文件 harbor.yml,在安装之前需要根据自己的需求进行修改。特别是以下字段:

    • hostname:设置 Harbor 的域名或 IP 地址(如 harbor.example.com)。
    • http:配置 Harbor 的端口和协议。
    • auth:配置认证方式(如选择 db_authldap_auth 等)。

    修改 harbor.yml 文件:

    hostname: harbor.example.com
    http:
      port: 80
    

2.5 安装 Harbor

配置完 harbor.yml 文件后,运行以下命令来启动 Harbor:

sudo ./install.sh

该命令将会使用 Docker Compose 启动 Harbor 所需的服务,包括 Web UI、Docker Registry、数据库等。


3. Harbor 的主要组件

3.1 Harbor 的架构

Harbor 的架构由多个服务组成,包括:

  • Harbor Core:处理 API 请求和 Web UI。
  • Docker Registry:用于存储 Docker 镜像。
  • Clair:用于扫描镜像的安全漏洞。
  • Notary:提供镜像签名功能。
  • Redis:作为缓存服务。
  • PostgreSQL:Harbor 的数据库。
  • Jobservice:用于管理镜像同步和任务。
  • Log:存储 Harbor 的日志数据。

所有这些组件都通过 Docker Compose 进行编排和管理。

3.2 Harbor Web UI

Harbor 提供了一个基于 Web 的图形界面,可以方便地管理镜像仓库、项目和用户权限。通过 Web UI,你可以:

  • 管理项目:创建、编辑、删除项目,管理项目权限。
  • 上传和下载镜像:将镜像推送到 Harbor 仓库,或从 Harbor 拉取镜像。
  • 安全扫描:对镜像进行安全扫描,查看漏洞信息。
  • 用户和权限管理:管理不同用户的权限,控制访问和操作。

访问 Harbor 的 Web UI:http://<hostname>/,默认的登录用户是 admin,密码为 Harbor12345,可以在配置文件中修改。

3.3 Harbor CLI(Harbor 命令行工具)

Harbor 还提供了一个命令行工具 Harbor CLI,可以通过它来进行一些常见的管理操作,如推送镜像、查看镜像等。

# 登录 Harbor
docker login harbor.example.com

# 推送镜像到 Harbor
docker tag myimage:latest harbor.example.com/myproject/myimage:latest
docker push harbor.example.com/myproject/myimage:latest

4. Harbor 的用户和权限管理

4.1 创建用户

Harbor 允许管理员创建多个用户,并为其分配不同的权限。通过 Web UIAPI 可以管理用户的创建和权限。

通过 Web UI 创建用户
  1. 登录 Harbor 管理界面。
  2. 转到 “Admin”“Users”
  3. 点击 “New User”,填写用户信息并设置权限。
用户角色和权限

Harbor 支持以下角色:

  • 管理员(Admin):具有完全的权限,能够管理 Harbor 系统的所有部分。
  • 开发者(Developer):可以上传和下载镜像,但不能管理项目和用户。
  • 访客(Guest):只能拉取镜像,不能上传或管理镜像。

4.2 项目和权限管理

在 Harbor 中,镜像是存储在 项目 中的。管理员可以为每个项目设置不同的访问权限:

  • 管理员权限:允许修改项目、管理成员、推送和拉取镜像。
  • 开发者权限:允许推送和拉取镜像,但无法删除或修改项目设置。
  • 访客权限:只允许拉取镜像。

4.3 访问控制(RBAC)

Harbor 支持 角色访问控制(RBAC),管理员可以为每个用户设置具体的操作权限。例如,某些用户可以仅访问某些特定项目,其他用户可能有更高的权限。


5. 镜像的管理和复制

5.1 镜像管理

在 Harbor 中,你可以管理镜像的生命周期,包括推送、拉取、删除等操作。通过 Web UI,你可以轻松地管理镜像的版本、标签、删除无用的镜像等。

5.2 镜像复制

Harbor 支持将镜像从一个 Harbor 实例复制到另一个实例,通常用于实现跨地域的镜像同步。

配置镜像复制
  1. 在 Harbor 的管理页面,转到 “Administration”“Replication”
  2. 配置复制任务,指定源和目标 Harbor 实例。

你可以选择 镜像同步 的方式,如 实时同步计划同步手动同步


6. Harbor 的安全性与合规性

6.1 镜像扫描

Harbor 集成了 ClairTrivy 安全扫描工具,用于扫描镜像中的安全漏洞。管理员可以启用镜像扫描功能,自动扫描每个上传的镜像,查看漏洞报告。

镜像扫描配置
  • 在 Harbor 管理界面,转到 “Administration”“Scanner”,配置镜像扫描工具。

6.2 镜像签名(Notary)

Harbor 还支持 镜像签名,通过 Notary 服务确保镜像在传输过程中未被篡改。镜像签名可以增加镜像的可信度,确保镜像的完整性和安全性。


7. Harbor 的高可用性和扩展性

7.1 高可用性部署

Harbor 支持高可用部署模式,可以通过配置多个 Harbor 实例来实现负载均衡和故障恢复。常见的高可用配置方式包括:

  • 数据库主从复制:Harbor 使用 PostgreSQL 作为数据库,通过配置主从数据库提高可靠性。
  • Redis 集群:用于缓存管理,提高性能和可用性。
  • **Docker Compose 和 Kubernetes

http://www.kler.cn/a/552752.html

相关文章:

  • Flask的知识点总结
  • VScode运行C语言提示“#Include错误,无法打开源文件stdio.h”
  • Vue中事件名的命名规范
  • 打开多个chrome历史记录
  • IDEA中集成Maven
  • 一问读懂AI工具—DeepSeek、Kimi、豆包、文心一言、通义千问
  • 【C++】结构体排序+sort(),cmp()参数写法口诀
  • 社群共建与共享:以十点读书会为例探讨开源AI智能名片2+1链动模式S2B2C商城小程序的应用
  • 从C语言源码到可执行文件的生成过程通常包括
  • List<Map<String, Object>> 如何对某个字段求和
  • 25/2/18 <算法笔记> ByteTrack
  • 阿里云前端自动化部署流程指南
  • 《DeepSeek赋能工业互联网:解锁数据深度分析新姿势》
  • 【Elasticsearch】分页查询
  • Pycharm打开的jupyter notebook无法在pycharm中关闭怎么解决
  • el-table树状表格,默认展开第一个节点的每一层
  • 2024亚马逊数据分析!
  • lambda表达式thenComparing使用示例
  • Ubuntu 下创建具有 root 权限用户
  • Elasticsearch AI Assistant 集成 DeepSeek,1分钟搭建智能运维助手