Harbor企业级镜像仓库部署全记录:从零到一的完整指南

一、Harbor简介与安装背景

Harbor是由VMware公司开源的企业级Docker镜像仓库管理工具,提供镜像存储、权限控制、镜像签名、漏洞扫描等核心功能。相较于开源的Docker Registry,Harbor通过添加RBAC权限模型、审计日志、复制策略等企业级特性,成为CI/CD流水线中不可或缺的组件。本文记录的安装环境为CentOS 7.9系统,采用离线安装方式规避网络波动风险,目标构建支持HTTPS协议的高可用镜像仓库。

二、安装前环境准备

1. 硬件资源要求

官方推荐配置为4核CPU、8GB内存、100GB存储空间。实际测试表明,在中小规模场景下(50人以下开发团队),2核4GB内存的虚拟机可稳定运行,但需限制同时上传镜像的并发数。存储空间建议采用LVM逻辑卷管理,便于后期扩容。

2. 软件依赖安装

  1. # 安装Docker CE(CentOS 7示例)
  2. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. sudo yum install docker-ce docker-ce-cli containerd.io
  5. # 安装Docker Compose(1.29+版本)
  6. 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
  7. sudo chmod +x /usr/local/bin/docker-compose

3. 网络配置要点

  • 防火墙开放443(HTTPS)、80(HTTP重定向)、4443(Notary服务,可选)端口
  • SELinux需设置为permissive模式或配置安全策略
  • 推荐使用Nginx反向代理实现负载均衡,示例配置如下:
    ```nginx
    upstream harbor {
    server harbor-core:8443;
    server harbor-core-backup:8443;
    }

server {
listen 443 ssl;
server_name registry.example.com;
ssl_certificate /etc/nginx/certs/registry.crt;
ssl_certificate_key /etc/nginx/certs/registry.key;

  1. location / {
  2. proxy_pass https://harbor;
  3. proxy_set_header Host $host;
  4. proxy_set_header X-Real-IP $remote_addr;
  5. }

}

  1. # 三、Harbor安装实施
  2. ## 1. 离线安装包准备
  3. GitHub Release页面下载Harbor Offline Installer包(当前最新稳定版为v2.9.0),包含:
  4. - 预编译的Docker镜像
  5. - 配置模板文件
  6. - 安装脚本
  7. ## 2. 配置文件定制
  8. 修改`harbor.yml.tmpl`模板文件关键参数:
  9. ```yaml
  10. hostname: registry.example.com
  11. https:
  12. certificate: /data/cert/registry.crt
  13. private_key: /data/cert/registry.key
  14. harbor_admin_password: StrongPassword123!
  15. database:
  16. password: rootpassword
  17. max_open_conns: 100
  18. max_idle_conns: 50
  19. storage_driver:
  20. name: filesystem
  21. filesystem:
  22. rootdirectory: /data/registry

参数说明

  • max_open_conns:数据库连接池最大连接数,建议设置为CPU核心数的2倍
  • rootdirectory:存储镜像的物理路径,需确保磁盘I/O性能

3. 安装执行流程

  1. # 解压安装包
  2. tar xvf harbor-offline-installer-v2.9.0.tgz
  3. cd harbor
  4. # 生成自定义配置
  5. cp harbor.yml.tmpl harbor.yml
  6. vim harbor.yml # 按需修改
  7. # 执行安装
  8. sudo ./install.sh --with-trivy # 包含漏洞扫描组件

安装过程会自动完成以下操作:

  1. 创建Docker网络harbor
  2. 启动核心服务容器(core、db、jobservice、registry、portal)
  3. 初始化数据库表结构
  4. 配置Nginx代理

四、安装后验证与优化

1. 功能验证

  1. # 登录测试
  2. docker login registry.example.com
  3. # 推送镜像测试
  4. docker tag nginx:latest registry.example.com/library/nginx:v1
  5. docker push registry.example.com/library/nginx:v1

2. 性能调优建议

  • 数据库优化:修改PostgreSQL配置文件/var/lib/postgresql/data/postgresql.conf,调整:
    1. shared_buffers = 256MB # 物理内存的25%
    2. work_mem = 4MB # 每个查询操作的工作内存
    3. maintenance_work_mem = 64MB
  • 镜像清理策略:配置garbage collection策略,示例Cron任务:
    1. 0 3 * * * /usr/bin/docker run -it --rm --name gc \
    2. -e HARBOR_ADMIN_PASSWORD=xxx \
    3. -v /var/run/docker.sock:/var/run/docker.sock \
    4. goharbor/harbor-gc:v2.9.0

3. 高可用方案

  • 主从复制:配置多个Harbor实例间的项目复制规则
  • 对象存储集成:支持AWS S3、MinIO等后端存储,配置示例:
    1. storage_driver:
    2. name: s3
    3. s3:
    4. accesskey: xxx
    5. secretkey: xxx
    6. region: us-west-1
    7. bucket: harbor-registry
    8. regionendpoint: http://minio.example.com

五、常见问题解决方案

1. 证书问题处理

当出现x509: certificate signed by unknown authority错误时,需将CA证书添加到Docker信任链:

  1. # 创建或修改Docker证书目录
  2. sudo mkdir -p /etc/docker/certs.d/registry.example.com
  3. sudo cp registry.crt /etc/docker/certs.d/registry.example.com/ca.crt
  4. sudo systemctl restart docker

2. 数据库连接失败

检查PostgreSQL容器日志,常见原因包括:

  • 磁盘空间不足:df -h检查存储使用情况
  • 连接数耗尽:调整max_connections参数
  • 权限问题:确保harbor用户有数据库操作权限

3. 性能瓶颈分析

使用docker stats监控容器资源使用,结合nmon工具分析系统级性能指标。对于I/O密集型场景,建议:

  • 将存储目录挂载到SSD磁盘
  • 调整Registry容器的--storage-driver参数
  • 启用Registry的缓存机制

六、运维建议

  1. 备份策略:每日自动备份数据库(pg_dump)和配置文件
  2. 监控告警:集成Prometheus+Grafana监控镜像数量、存储使用率、API响应时间等指标
  3. 升级路径:遵循小版本迭代升级原则,每次升级前执行./prepare脚本验证环境兼容性

通过本文记录的完整安装流程,读者可构建出满足企业级需求的镜像仓库。实际部署中需根据具体业务场景调整参数配置,建议先在测试环境验证后再迁移到生产环境。Harbor的模块化设计使得后续功能扩展(如添加CI/CD集成、实现多集群同步)变得简单高效,为容器化应用交付提供可靠的基础设施支持。