Skip to content

Harbor 部署

Harbor 是 VMware 开源的企业级容器镜像仓库,提供镜像管理、访问控制、安全扫描、镜像复制等企业级功能,是目前最流行的私有镜像仓库解决方案之一。

Harbor 的特性

功能说明
多租户项目隔离,精细化权限控制
安全扫描集成 Trivy 扫描镜像漏洞
镜像复制跨仓库自动同步镜像
LDAP/AD 集成企业用户认证
Webhook镜像推送事件通知
Helm Chart支持 Helm Chart 仓库
OCI 兼容支持 OCI 标准制品
审计日志完整的操作审计

系统要求

组件最低推荐
CPU2 核4 核
内存4 GB8 GB
磁盘40 GB160 GB+
Docker20.10+最新稳定版
Docker Compose1.18.0+最新版

下载安装包

bash
# 从 GitHub 下载最新版
# https://github.com/goharbor/harbor/releases

# 下载在线安装包(较小,安装时拉取镜像)
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz

# 或下载离线安装包(包含所有镜像,适合内网)
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz

# 解压
tar xzf harbor-online-installer-v2.10.0.tgz
cd harbor

配置 harbor.yml

bash
# 复制配置模板
cp harbor.yml.tmpl harbor.yml

# 编辑配置
vi harbor.yml

关键配置项:

yaml
# 主机名(域名或 IP)
hostname: registry.example.com

# HTTP 配置(开发/测试用,生产建议使用 HTTPS)
http:
  port: 80

# HTTPS 配置(生产环境必须开启)
https:
  port: 443
  certificate: /your/certificate/path
  private_key: /your/private/key/path

# 管理员密码(首次登录后修改)
harbor_admin_password: Harbor12345

# 数据库配置
database:
  password: root123
  max_idle_conns: 100
  max_open_conns: 900

# 数据存储路径
data_volume: /data

# Trivy 漏洞扫描
trivy:
  ignore_unfixed: false
  skip_update: false
  offline_scan: false

# 日志
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200m
    location: /var/log/harbor

安装

bash
# 安装(会下载并启动所有必要服务)
sudo ./install.sh

# 启用 Trivy 漏洞扫描
sudo ./install.sh --with-trivy

# 同时启用 Trivy 和 Notary(镜像签名)
sudo ./install.sh --with-trivy --with-notary

安装完成后,Harbor 会创建以下服务:

  • harbor-core:核心服务
  • harbor-db:PostgreSQL 数据库
  • harbor-redis:Redis 缓存
  • harbor-registry:Docker Registry
  • nginx:反向代理
  • harbor-portal:前端 UI

管理 Harbor

bash
# Harbor 使用 Docker Compose 管理
cd /path/to/harbor

# 启动
docker compose start

# 停止
docker compose stop

# 重启
docker compose restart

# 停止并删除(不删除数据)
docker compose down

使用 Harbor

Web UI

访问 http://registry.example.com(或配置的地址),使用 admin 和配置的密码登录。

创建项目

  1. 登录后点击 新建项目
  2. 填写项目名称(如 myteam
  3. 选择访问级别(公开/私有)
  4. 点击确定

命令行使用

bash
# 登录 Harbor
docker login registry.example.com

# 推送镜像(格式:仓库地址/项目/镜像名:标签)
docker tag myapp:1.0 registry.example.com/myteam/myapp:1.0
docker push registry.example.com/myteam/myapp:1.0

# 拉取镜像
docker pull registry.example.com/myteam/myapp:1.0

# 使用 Compose
# docker-compose.yml 中使用私有仓库镜像

配置非 HTTPS 访问

开发环境如果只配置了 HTTP,需要在 Docker 客户端配置:

bash
sudo tee -a /etc/docker/daemon.json <<EOF
{
  "insecure-registries": ["registry.example.com:80"]
}
EOF
sudo systemctl restart docker

用户和权限管理

Harbor 支持精细化的 RBAC(基于角色的访问控制):

角色权限
访客(Guest)只读:拉取镜像
开发者(Developer)读写:拉取/推送镜像
维护人(Maintainer)读写+管理:包括删除、配置标记
项目管理员(Project Admin)项目完全控制
系统管理员(Admin)系统全局权限
bash
# 通过 API 创建用户
curl -X POST \
  -H "Content-Type: application/json" \
  -u admin:Harbor12345 \
  "http://registry.example.com/api/v2.0/users" \
  -d '{
    "username": "developer1",
    "password": "Developer@123",
    "email": "dev1@example.com",
    "realname": "Developer One"
  }'

镜像复制

Harbor 支持在不同仓库间自动同步镜像:

  1. 进入 管理仓库管理新建目标
  2. 填写目标仓库(Docker Hub / 另一个 Harbor / S3 等)
  3. 进入 复制管理新建规则
  4. 配置触发条件(手动/定时/事件触发)

升级 Harbor

bash
# 1. 备份数据
cd /harbor
docker compose down
cp -r /data /data.bak

# 2. 下载新版本安装包并解压
cd /opt
tar xzf harbor-online-installer-v2.xx.x.tgz
cd harbor

# 3. 复制旧配置
cp /old-harbor/harbor.yml .
# 根据新版本 harbor.yml.tmpl 更新配置项

# 4. 执行迁移
./prepare

# 5. 重新安装
./install.sh

总结

Harbor 是企业级私有镜像仓库的首选:

  1. 安装简单:一键脚本安装
  2. 功能完整:权限控制、安全扫描、镜像复制
  3. Web UI:直观的操作界面
  4. API 完整:支持 CI/CD 集成

生产建议:

  • 配置 HTTPS(使用 Let's Encrypt 或企业证书)
  • 定期备份 /data 目录
  • 开启 Trivy 漏洞扫描
  • 定期清理未使用的镜像