Harbor简介及部署使用

目录

[一、Harbor 简介](#一、Harbor 简介)

[二、环境准备(离线 / 在线部署通用)](#二、环境准备(离线 / 在线部署通用))

[三、Harbor 在线部署流程](#三、Harbor 在线部署流程)

[1. 下载安装包](#1. 下载安装包)

[2. 复制配置模板并修改参数](#2. 复制配置模板并修改参数)

[3. 执行一键安装脚本](#3. 执行一键安装脚本)

[4. 访问 Harbor UI](#4. 访问 Harbor UI)

[四、常用运维命令(启停 / 升级 / 卸载)](#四、常用运维命令(启停 / 升级 / 卸载))

[五、客户端 Docker 对接 Harbor(核心使用步骤)](#五、客户端 Docker 对接 Harbor(核心使用步骤))

[场景 1:Harbor 使用 HTTP(无 SSL,内网测试)](#场景 1:Harbor 使用 HTTP(无 SSL,内网测试))

[场景 2:HTTPS 域名(生产)](#场景 2:HTTPS 域名(生产))

[六、Web UI 基础使用流程](#六、Web UI 基础使用流程)

[1. 创建项目](#1. 创建项目)

[2. 镜像漏洞扫描](#2. 镜像漏洞扫描)

[3. 镜像复制(跨仓库同步)](#3. 镜像复制(跨仓库同步))

[4. 垃圾回收(清理无用镜像层)](#4. 垃圾回收(清理无用镜像层))

[5. 用户与权限管理](#5. 用户与权限管理)

七、生产环境最佳实践


一、Harbor 简介

  1. 什么是 Harbor

Harbor 是 VMware 开源、企业级私有 Docker 容器镜像仓库,基于 Docker Registry 二次开发,专为企业内部容器镜像管理设计,弥补原生 Registry 无权限、无 UI、无审计、无漏洞扫描等短板。

  1. 核心功能
  • Web 可视化管理界面:图形化上传 / 下载镜像、项目管理、日志查看
  • 基于 RBAC 细粒度权限
  • 管理员、项目管理员、开发、访客;私有 / 公开项目
  • 多仓库、多项目隔离:按业务线划分项目,镜像互不干扰
  • 镜像复制同步:主从仓库、跨机房镜像同步(复制策略、定时同步)
  • 漏洞扫描(集成 Trivy/Clair):自动扫描镜像高危漏洞,拦截有风险镜像
  • 镜像签名与内容信任(Notary):防镜像篡改,生产环境安全校验
  • 审计日志:所有推拉镜像、用户操作留痕,满足等保合规
  • LDAP/AD/OAuth 集成:对接企业统一账号登录
  • 垃圾回收:清理无用镜像层,释放存储
  • 支持 Helm Chart 仓库:同时管理容器镜像 + K8s Helm 包
  1. 组件架构

Proxy:反向代理,统一入口,分发 UI、Registry、API 请求

Core(harbor-core):核心业务逻辑,权限、项目、复制、审计

Registry:底层镜像存储(原生 docker registry)

Database(PostgreSQL):存储用户、项目、权限、日志元数据

Redis:缓存、会话、任务队列

Trivy:镜像漏洞扫描器

Notary:镜像签名服务(可选)

Chart Museum:Helm Chart 仓库(可选)

Jobservice:异步任务(镜像同步、扫描、垃圾回收)

  1. 适用场景
  • 企业内网私有镜像仓库,不对外暴露业务镜像
  • K8s 集群统一拉取内部业务镜像
  • 镜像安全管控、漏洞检测、权限分级
  • 多环境镜像同步(开发 / 测试 / 生产隔离)

二、环境准备(离线 / 在线部署通用)

  1. 硬件最低配置

CPU:2 核

内存:4GB(低于 4GB 极易卡顿、服务崩溃)

磁盘:50GB+(镜像存储,越大越好)

系统:CentOS7/8、Ubuntu 20.04/22.04、RockyLinux

  1. 必须预装软件
  • Docker Engine 20.10+
  • Docker Compose v2(推荐新版)
  • 关闭防火墙 / 放行 80、443 端口;关闭 SELinux
  • 域名 / IP:建议绑定域名,生产配置 HTTPS 证书
  1. 环境初始化(CentOS 示例)
bash 复制代码
# 关闭防火墙、selinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 安装docker+compose
yum install -y docker-ce docker-compose-plugin
systemctl enable --now docker

三、Harbor 在线部署流程

1. 下载安装包

官方下载地址:https://github.com/goharbor/harbor/releases

选择 harbor-offline-installer-vx.x.x.tgz(离线包,推荐)或在线包。

bash 复制代码
# 以 v2.10.0 为例
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
tar -zxvf harbor-offline-installer-v2.10.0.tgz
cd harbor

2. 复制配置模板并修改参数

bash 复制代码
cp harbor.yml.tmpl harbor.yml
vim harbor.yml

关键修改项:

bash 复制代码
# 1. 访问地址:IP或域名
hostname: 192.168.1.100

# 2. http端口(不配置https则使用80)
http:
  port: 80

# 3. https配置(生产必开,测试可注释跳过)
#https:
#  port: 443
#  certificate: /data/cert/harbor.crt
#  private_key: /data/cert/harbor.key

# 4. 管理员初始密码,务必修改
harbor_admin_password: Harbor@123456

# 5. 数据库内置密码,自定义
database:
  password: root123

# 6. 镜像持久化存储路径,建议单独磁盘
data_volume: /data/harbor

# 7. 漏洞扫描开启trivy
trivy:
  ignore_unfixed: false
  skip_update: false
  offline_scan: false

3. 执行一键安装脚本

bash 复制代码
# 基础安装(仅镜像仓库)
./install.sh

# 带Trivy漏洞扫描安装
# ./install.sh --with-trivy

# 带Chart仓库 + Trivy
# ./install.sh --with-trivy --with-chartmuseum

脚本自动拉取镜像、生成 docker-compose.yml、启动所有容器。

4. 访问 Harbor UI

浏览器打开 http://192.168.1.100

默认账号:admin,密码为 harbor.yml 中配置的 harbor_admin_password

四、常用运维命令(启停 / 升级 / 卸载)

进入 harbor 目录执行:

bash 复制代码
# 停止harbor
docker compose down

# 后台启动
docker compose up -d

# 重启
docker compose restart

# 查看日志
docker compose logs -f

# 修改配置后重载(改harbor.yml后必须执行)
./prepare
docker compose up -d

# 完全卸载(删除容器,数据目录保留)
docker compose down -v

五、客户端 Docker 对接 Harbor(核心使用步骤)

场景 1:Harbor 使用 HTTP(无 SSL,内网测试)

Docker 默认拒绝 HTTP 私有仓库,需配置信任不安全仓库:

bash 复制代码
# 创建docker配置目录
mkdir -p /etc/docker
vim /etc/docker/daemon.json

写入内容:

bash 复制代码
{
  "insecure-registries": ["192.168.1.100"]
}

重启 docker 生效:

bash 复制代码
systemctl daemon-reload
systemctl restart docker

场景 2:HTTPS 域名(生产)

将域名证书放入 /etc/docker/certs.d/域名/,无需 insecure-registries 配置

  1. Docker 登录 Harbor
bash 复制代码
docker login 192.168.1.100
# 输入账号admin、配置的密码
  1. 镜像打标签(推送规范)

格式:仓库地址/项目名/镜像名:版本

bash 复制代码
# 本地原有镜像
docker pull nginx:alpine
# 重打标签,test为harbor里提前创建的项目
docker tag nginx:alpine 192.168.1.100/test/nginx:alpine
  1. 推送镜像到 Harbor
bash 复制代码
docker push 192.168.1.100/test/nginx:alpine
  1. 从 Harbor 拉取镜像
bash 复制代码
docker pull 192.168.1.100/test/nginx:alpine

六、Web UI 基础使用流程

1. 创建项目

(1)登录 UI → 项目 → 新建项目

(2)参数:

  • 项目名称:业务名(test/dev/prod)
  • 访问级别:私有(需登录拉取)/ 公开(无需登录直接拉取)
  • 存储配额:限制镜像容量

(3)权限:添加成员,分配项目管理员 / 开发者 / 访客

2. 镜像漏洞扫描

  • 进入项目镜像详情
  • 点击「扫描」,Trivy 自动检测 CVE 漏洞
  • 可配置:推送镜像后自动扫描、禁止高危漏洞镜像推送

3. 镜像复制(跨仓库同步)

  • 管理员页面 → 仓库管理 → 新建目标(填写备用 Harbor 地址账号)
  • 创建复制规则:按项目 / 标签匹配,定时 / 实时同步镜像

4. 垃圾回收(清理无用镜像层)

  • 系统管理 → 垃圾回收
  • 先只读模式检查,确认无占用再执行清理,释放磁盘空间

5. 用户与权限管理

  • 本地用户:手动新增开发账号
  • LDAP 集成:对接企业 AD,统一登录,不用单独维护账号

七、生产环境最佳实践

  1. 启用 HTTPS:使用正式 SSL 证书,禁止公网 HTTP
  2. 划分多项目隔离环境:dev、test、prod 分开,prod 项目仅管理员可推送
  3. 开启 Trivy 自动扫描,阻断高危漏洞镜像
  4. 配置镜像复制,异地多活备份镜像
  5. 数据目录挂载独立高速磁盘,定期备份 PostgreSQL 数据库
  6. 对接 LDAP 统一身份认证,关闭 admin 日常登录权限
  7. 定期执行垃圾回收,避免磁盘占满
  8. K8s 节点全部配置 Harbor 仓库信任,镜像拉取统一走内网 Harbor