手把手搭建Harbo私有镜像仓库:企业级指南

手把手教会你,如何搭建企业级的Harbo私有镜像仓库

一、为什么需要企业级私有镜像仓库?

在容器化部署成为主流的今天,企业面临三大核心需求:镜像安全隔离(避免公共仓库泄露敏感数据)、高效分发(跨地域内网传输加速)、全生命周期管理(版本控制、权限审计)。Harbor作为CNCF毕业项目,提供基于角色的访问控制、镜像复制、漏洞扫描等企业级功能,成为私有仓库的首选方案。

二、环境准备:硬件与软件要求

硬件配置建议

  • 基础版:4核CPU/8GB内存/100GB磁盘(测试环境)
  • 生产环境:8核CPU/16GB内存/500GB+磁盘(支持千级并发)
  • 网络要求:千兆内网带宽,建议独立网卡隔离存储网络

软件依赖清单

  1. # 基础环境(Ubuntu 20.04示例)
  2. sudo apt update
  3. sudo apt install -y docker.io docker-compose
  4. sudo systemctl enable docker
  5. # 存储驱动选择(Overlay2为推荐)
  6. cat > /etc/docker/daemon.json <<EOF
  7. {
  8. "storage-driver": "overlay2",
  9. "insecure-registries": ["harbor.example.com"]
  10. }
  11. EOF
  12. sudo systemctl restart docker

三、Harbor安装三步法

1. 下载安装包

  1. # 官网获取最新版本(示例为v2.9.0)
  2. wget https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-online-installer-v2.9.0.tgz
  3. tar xvf harbor-online-installer-v2.9.0.tgz
  4. cd harbor

2. 配置修改要点

编辑harbor.yml核心参数:

  1. hostname: harbor.example.com # 必须为DNS可解析域名
  2. http:
  3. port: 80
  4. https:
  5. certificate: /data/cert/harbor.crt
  6. private_key: /data/cert/harbor.key
  7. harbor_admin_password: Harbor12345 # 初始密码
  8. database:
  9. password: root123
  10. max_open_conns: 1000
  11. max_idle_conns: 100
  12. storage_service:
  13. redis:
  14. password: redis123

3. 执行安装命令

  1. # 生成自签名证书(生产环境替换为CA证书)
  2. sudo mkdir -p /data/cert
  3. sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  4. -keyout /data/cert/harbor.key -out /data/cert/harbor.crt \
  5. -subj "/CN=harbor.example.com"
  6. # 启动安装(自动拉取依赖镜像)
  7. sudo ./install.sh --with-trivy # 包含漏洞扫描组件

四、企业级功能配置

1. 用户与权限管理

  1. -- 创建项目级权限示例(需通过Harbor API操作)
  2. POST /api/v2.0/projects
  3. {
  4. "project_name": "finance-team",
  5. "public": false,
  6. "metadata": {
  7. "public": "false"
  8. }
  9. }
  10. -- 分配开发者角色
  11. POST /api/v2.0/projects/1/members
  12. {
  13. "role_id": 2, # 开发者角色
  14. "member_user": {
  15. "username": "dev001"
  16. }
  17. }

2. 镜像复制策略

  1. # 在harbor.yml中配置复制规则
  2. replication:
  3. - name: "prod-to-dr"
  4. disabled: false
  5. src_registry:
  6. url: "https://harbor.example.com"
  7. insecure: false
  8. dest_registry:
  9. url: "https://harbor-dr.example.com"
  10. insecure: false
  11. dest_namespace: "prod-backup"
  12. trigger:
  13. type: "manual" # 可选"schedule"定时同步
  14. filters:
  15. - project: ["finance-team"]

3. 漏洞扫描集成

  1. # 启用Trivy扫描(需在install时添加--with-trivy)
  2. sudo docker exec -it harbor-trivy trivy image --severity CRITICAL,HIGH nginx:latest
  3. # 配置扫描策略(Web界面操作)
  4. 路径:系统管理 > 漏洞扫描 > 扫描策略
  5. 推荐设置:
  6. - 扫描频率:每日凌晨3
  7. - 阻断规则:CRITICAL漏洞自动阻断

五、运维管理最佳实践

1. 监控告警方案

  1. # Prometheus配置示例
  2. - job_name: 'harbor'
  3. static_configs:
  4. - targets: ['harbor.example.com:9090']
  5. metrics_path: '/metrics'
  6. params:
  7. format: ['prometheus']
  8. # 关键监控指标
  9. - harbor_project_count
  10. - harbor_artifact_count
  11. - harbor_request_duration_seconds

2. 备份恢复流程

  1. # 完整备份脚本
  2. #!/bin/bash
  3. BACKUP_DIR="/backup/harbor-$(date +%Y%m%d)"
  4. mkdir -p $BACKUP_DIR
  5. # 数据库备份
  6. sudo docker exec -it harbor-db pg_dump -U postgres -h 127.0.0.1 registry > $BACKUP_DIR/registry.sql
  7. # 配置文件备份
  8. cp -r /etc/harbor $BACKUP_DIR/
  9. # 镜像存储备份(需停止服务)
  10. sudo systemctl stop harbor
  11. rsync -av /data/registry/ $BACKUP_DIR/registry/
  12. sudo systemctl start harbor

3. 性能优化技巧

  • 存储优化:启用storage_service.redis.sentinel_master_set实现高可用
  • 网络优化:配置Nginx反向代理时添加proxy_buffering off
  • 缓存策略:设置proxy_cache_path缓存频繁访问的镜像层

六、常见问题解决方案

1. 登录失败排查

  1. # 检查认证服务状态
  2. sudo docker ps | grep harbor-core
  3. # 查看认证日志
  4. sudo docker logs harbor-core 2>&1 | grep "authentication"
  5. # 典型原因
  6. - 时钟不同步(NTP服务未配置)
  7. - 证书过期(检查/data/cert/有效期)
  8. - 数据库连接池耗尽(调整harbor.ymldatabase.pool_size

2. 镜像推送缓慢

  1. # 网络诊断三步法
  2. 1. 测试基础网络
  3. ping harbor.example.com
  4. 2. 检查Docker日志
  5. journalctl -u docker --no-pager -n 100 | grep "harbor"
  6. 3. 启用详细日志
  7. 修改/etc/docker/daemon.json
  8. {
  9. "debug": true
  10. }

七、升级与扩展指南

1. 在线升级流程

  1. # 1. 备份当前版本
  2. ./prepare.sh backup
  3. # 2. 下载新版本
  4. wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz
  5. # 3. 执行升级
  6. sudo ./install.sh --with-chartmuseum --with-trivy
  7. # 4. 验证版本
  8. sudo docker exec -it harbor-core /harbor/harbor version

2. 集群部署方案

  1. # harbor-cluster.yml示例
  2. core:
  3. replicas: 3
  4. hpa:
  5. min: 3
  6. max: 10
  7. cpu: 80
  8. jobservice:
  9. replicas: 2
  10. worker_count: 10
  11. trivy:
  12. replicas: 2
  13. scan_concurrency: 5

结语

通过本文的详细指导,您已掌握从环境搭建到高级运维的全流程技能。实际部署时建议:1)先在测试环境验证配置 2)制定完整的备份策略 3)建立监控告警体系。Harbor 2.9+版本已支持多架构镜像存储,可结合企业实际需求扩展GPU镜像管理等高级功能。