Harbor镜像仓库搭建全攻略:从零到一的完整实践指南

一、Harbor镜像仓库概述

Harbor是由VMware公司开源的企业级Docker Registry管理工具,提供基于角色的访问控制、镜像复制、漏洞扫描、审计日志等核心功能。相较于原生Docker Registry,Harbor通过Web界面和REST API简化了镜像管理流程,特别适合需要集中管控多项目镜像的企业场景。其架构包含Proxy(反向代理)、Core Services(核心服务)、Database(数据库)和Storage(存储)四大组件,支持高可用部署和横向扩展。

二、环境准备与前提条件

1. 服务器配置要求

  • 基础配置:建议4核CPU、8GB内存、50GB以上磁盘空间(根据镜像存储量调整)
  • 操作系统:CentOS 7/8或Ubuntu 20.04 LTS(需支持Docker)
  • 网络要求:开放443(HTTPS)、80(HTTP)、22(SSH)端口,建议配置独立内网IP

2. 软件依赖安装

  1. # CentOS示例
  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. sudo systemctl enable --now docker
  6. # 验证Docker安装
  7. docker --version

3. 证书配置(HTTPS场景)

  1. # 生成自签名证书(生产环境建议使用CA签发证书)
  2. sudo mkdir -p /data/cert
  3. sudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout /data/cert/domain.key \
  4. -x509 -days 365 -out /data/cert/domain.crt -subj "/CN=harbor.example.com"

三、Harbor安装部署流程

1. 下载安装包

  1. # 获取最新版本(以2.5.0为例)
  2. wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz
  3. tar xvf harbor-offline-installer-v2.5.0.tgz
  4. cd harbor

2. 配置文件修改

编辑harbor.yml核心配置文件:

  1. hostname: harbor.example.com # 必须与证书CN一致
  2. http:
  3. port: 80
  4. https:
  5. port: 443
  6. certificate: /data/cert/domain.crt
  7. private_key: /data/cert/domain.key
  8. harbor_admin_password: Harbor12345 # 初始管理员密码
  9. database:
  10. password: root123
  11. max_idle_conns: 50
  12. max_open_conns: 100
  13. storage_driver:
  14. name: filesystem
  15. fs_driver:
  16. rootdirectory: /var/lib/registry

3. 执行安装脚本

  1. # 安装前确保Docker服务运行
  2. sudo ./install.sh --with-trivy # 包含漏洞扫描组件

4. 启动状态验证

  1. docker-compose ps # 查看服务状态
  2. curl -k https://harbor.example.com/api/v2.0/health # 应返回200状态码

四、核心功能配置详解

1. 项目与用户管理

  • 项目创建:通过Web界面或API创建项目,可设置公开/私有属性
  • 用户权限:支持LDAP集成,可配置管理员、开发者、访客等角色
  • 机器人账户:用于CI/CD流水线自动推送镜像
    1. # 创建机器人账户示例
    2. curl -X POST -u "admin:Harbor12345" \
    3. -H "Content-Type: application/json" \
    4. -d '{"name":"ci-bot","description":"CI/CD专用","expires_in":0}' \
    5. https://harbor.example.com/api/v2.0/robots

2. 镜像复制策略

配置跨数据中心镜像同步:

  1. # 在harbor.yml中添加复制适配器
  2. replication:
  3. - name: "region-a-to-b"
  4. disabled: false
  5. src_registry:
  6. url: "https://harbor.example.com"
  7. insecure: false
  8. dest_registry:
  9. url: "https://harbor-b.example.com"
  10. insecure: false
  11. dest_namespace: "library"
  12. trigger:
  13. type: "manual" # 支持manual/schedule/event三种触发方式
  14. filters:
  15. tag_filter:
  16. pattern: "latest"

3. 漏洞扫描配置

  1. # 启用Trivy扫描(需在install.sh时添加--with-trivy参数)
  2. sudo docker run -d --name trivy-adapter \
  3. -v /var/run/docker.sock:/var/run/docker.sock \
  4. -v /data/trivy:/root/.cache \
  5. goharbor/trivy-adapter-photon:v2.5.0

五、安全加固最佳实践

1. 网络隔离方案

  • 部署Nginx反向代理限制访问IP
  • 配置防火墙规则仅允许特定网段访问管理端口
    1. # iptables示例
    2. sudo iptables -A INPUT -p tcp --dport 443 -s 192.168.1.0/24 -j ACCEPT
    3. sudo iptables -A INPUT -p tcp --dport 443 -j DROP

2. 镜像签名验证

  1. # 生成GPG密钥对
  2. gpg --full-generate-key
  3. # 导出公钥
  4. gpg --export --armor > pubkey.gpg
  5. # 在Harbor中配置受信任的GPG密钥

3. 审计日志配置

  1. # 在harbor.yml中启用审计日志
  2. log:
  3. level: info
  4. rotate_count: 50
  5. rotate_size: 200M
  6. location: /var/log/harbor
  7. audit_log:
  8. enabled: true
  9. path: /var/log/harbor/audit.log

六、常见问题解决方案

1. 安装失败排查

  • 错误现象Job "DB_MIGRATION" failed
  • 解决方案:检查数据库连接配置,确保harbor.yml中password与实际数据库密码一致

2. 镜像推送超时

  • 优化建议
    • 调整Docker客户端配置:echo '{"max-concurrent-uploads": 5}' > /etc/docker/daemon.json
    • 增大Harbor的max_open_conns参数值

3. 性能瓶颈分析

  • 监控指标
    • Registry存储I/O(建议使用SSD)
    • 数据库连接数(默认100,可根据负载调整)
    • 内存使用率(建议预留2GB缓冲空间)

七、升级与维护指南

1. 版本升级流程

  1. # 备份数据
  2. sudo docker-compose down
  3. sudo tar czvf harbor-backup-$(date +%Y%m%d).tar.gz /data
  4. # 下载新版本并修改配置
  5. wget https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-offline-installer-v2.6.0.tgz
  6. # 更新harbor.yml后执行
  7. sudo ./prepare
  8. sudo docker-compose up -d

2. 日常维护任务

  • 每周清理未使用的镜像标签
  • 每月检查磁盘空间使用情况
  • 每季度更新漏洞扫描规则库

八、企业级部署建议

  1. 高可用架构:采用Keepalived+VIP实现域名漂移
  2. 存储方案
    • 小规模:本地磁盘+RAID10
    • 大规模:NFS/Ceph/对象存储
  3. 监控集成
    • Prometheus采集指标
    • Grafana可视化看板
    • Alertmanager告警通知

通过以上系统化的搭建和配置,Harbor镜像仓库可满足企业从开发测试到生产环境的全流程镜像管理需求。实际部署时建议先在测试环境验证配置,再逐步推广到生产环境。对于超大规模部署(100+节点),可考虑使用Harbor的分布式架构模式。