私有镜像仓库 Harbor 安装与配置全攻略

私有镜像仓库 Harbor 安装与配置全攻略

一、Harbor 核心价值与适用场景

作为 CNCF 孵化的开源企业级 Registry 解决方案,Harbor 通过提供基于角色的访问控制(RBAC)、镜像复制、漏洞扫描、审计日志等企业级功能,解决了开源 Registry(如 Docker Distribution)在安全性、可管理性上的不足。典型应用场景包括:

  • 金融/政务等高安全要求行业的镜像隔离
  • 跨数据中心镜像同步与灾备
  • DevOps 流水线中的镜像标准化管理
  • 混合云环境下的镜像统一治理

二、安装前环境准备

1. 硬件资源要求

组件 最低配置 推荐配置
服务器 4核8G 8核16G+
磁盘空间 40GB(仅存储) 200GB+(含备份)
网络带宽 100Mbps 1Gbps+

2. 软件依赖检查

  1. # 验证系统版本(支持CentOS 7/8, Ubuntu 18.04/20.04)
  2. cat /etc/os-release
  3. # 检查Docker版本(需19.03+)
  4. docker --version
  5. # 验证Docker Compose(需1.25.0+)
  6. docker-compose --version

3. 网络配置要点

  • 开放端口:443(HTTPS)、80(HTTP重定向)、22(SSH管理)
  • 防火墙规则示例(CentOS 7):
    1. firewall-cmd --permanent --add-port={80,443,22}/tcp
    2. firewall-cmd --reload

三、标准化安装流程

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.tmpl 关键参数:

  1. hostname: registry.example.com # 必须为可解析的域名
  2. https:
  3. certificate: /data/cert/harbor.crt
  4. private_key: /data/cert/harbor.key
  5. harbor_admin_password: Harbor12345 # 初始管理员密码
  6. database:
  7. password: root123 # 数据库密码
  8. storage_driver:
  9. name: filesystem
  10. fs:
  11. rootpath: /data/registry

3. 证书配置最佳实践

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

4. 安装执行与验证

  1. # 生成最终配置
  2. cp harbor.yml.tmpl harbor.yml
  3. # 执行安装(需root权限)
  4. ./install.sh
  5. # 验证服务状态
  6. docker-compose ps
  7. # 正常应显示所有服务为"Up (healthy)"

四、核心配置详解

1. 项目与用户管理

  1. # 通过CLI创建项目(需先登录)
  2. docker login registry.example.com
  3. curl -u admin:Harbor12345 -X POST -H "Content-Type: application/json" \
  4. -d '{"project_name": "devops", "public": false}' \
  5. https://registry.example.com/api/v2.0/projects

2. 镜像复制策略配置

  1. // Web界面或通过API配置复制规则
  2. {
  3. "name": "prod-sync",
  4. "dest_registry": {
  5. "url": "https://registry-prod.example.com",
  6. "insecure": false
  7. },
  8. "dest_namespace": "library",
  9. "trigger": {
  10. "type": "immediate"
  11. },
  12. "filters": [
  13. {
  14. "type": "name",
  15. "value": "nginx:*"
  16. }
  17. ]
  18. }

3. 漏洞扫描配置

  1. # 在harbor.yml中启用Trivy扫描
  2. scan:
  3. policy: daily # 或"none"禁用扫描
  4. trivy:
  5. ignore_unfixed: false
  6. skip_update: false
  7. insecure: false

五、安全加固方案

1. 访问控制增强

  1. # 在Nginx配置中添加IP白名单
  2. server {
  3. listen 443 ssl;
  4. server_name registry.example.com;
  5. allow 192.168.1.0/24;
  6. deny all;
  7. # 其余SSL配置...
  8. }

2. 审计日志配置

  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. path: /var/log/harbor/audit.log
  9. max_size: 100M
  10. max_days: 30

3. 定期维护脚本

  1. #!/bin/bash
  2. # 清理未使用的镜像(保留最近30天)
  3. docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
  4. -v $(pwd):/scripts alpine:3.14 sh /scripts/cleanup.sh
  5. # cleanup.sh内容示例
  6. find /data/registry/docker/registry/v2/repositories -type f \
  7. -name "link" -mtime +30 -exec rm {} \;

六、故障排查指南

1. 常见问题处理

现象 可能原因 解决方案
502 Bad Gateway Nginx配置错误 检查/etc/nginx/conf.d/harbor.conf
镜像拉取失败 证书不受信任 将CA证书添加到客户端信任链
数据库连接失败 密码不匹配 修改harbor.yml后执行./prepare

2. 日志分析技巧

  1. # 查看核心服务日志
  2. docker-compose logs -f core
  3. # 实时监控扫描日志
  4. tail -f /var/log/harbor/trivy.log
  5. # 收集诊断信息
  6. curl -u admin:Harbor12345 https://registry.example.com/api/v2.0/systeminfo/getcert > cert_info.json

七、性能优化建议

1. 存储优化

  • 使用分布式存储(如Ceph)替代本地存储
  • 配置存储类(StorageClass)实现动态卷分配
  • 定期执行docker system prune清理无用数据

2. 网络优化

  • 启用HTTP/2加速镜像传输
  • 配置CDN加速热门镜像下载
  • 在多数据中心部署中启用P2P镜像分发

3. 数据库调优

  1. -- 修改PostgreSQL配置(通过docker exec进入容器)
  2. ALTER SYSTEM SET max_connections = 200;
  3. ALTER SYSTEM SET shared_buffers = 256MB;

八、升级与迁移指南

1. 版本升级流程

  1. # 1. 备份当前数据
  2. docker-compose down
  3. tar czvf harbor-backup-$(date +%Y%m%d).tar.gz /data
  4. # 2. 下载新版本并更新配置
  5. wget https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-offline-installer-v2.6.0.tgz
  6. cp harbor.yml harbor.yml.bak
  7. vi harbor.yml # 检查新版本配置变更
  8. # 3. 执行升级
  9. ./install.sh --with-clair # 如需保留Clair扫描器

2. 数据迁移方案

  1. # 使用rsync同步数据(跨主机迁移)
  2. rsync -avz --progress /data/registry user@new-host:/data/
  3. # 数据库迁移示例
  4. docker exec -it harbor-db pg_dump -U postgres -Fc registry > db_backup.dump
  5. ssh new-host "docker exec -i harbor-db pg_restore -U postgres -d registry -c < db_backup.dump"

九、企业级部署建议

  1. 高可用架构

    • 部署3节点Harbor集群
    • 配置共享存储(NFS/iSCSI)
    • 使用Keepalived实现VIP切换
  2. 灾备方案

    • 定时执行harbor-backup脚本
    • 跨数据中心镜像复制
    • 定期验证恢复流程
  3. 监控集成

    • Prometheus+Grafana监控面板
    • Alertmanager告警规则配置
    • ELK日志分析系统对接

十、未来演进方向

  1. 云原生集成

    • 支持CRI-O/containerd等新型运行时
    • 增强与Kubernetes Operator的集成
  2. AI/ML支持

    • 模型仓库扩展
    • 训练数据版本管理
    • 分布式训练任务调度
  3. 安全增强

    • 零信任架构支持
    • 硬件安全模块(HSM)集成
    • 量子加密算法预研

本文通过系统化的安装指南、配置详解和优化建议,为开发者提供了从入门到精通的Harbor实践路径。实际部署时建议先在测试环境验证配置,再逐步推广到生产环境。对于大型企业,可考虑结合Ansible/Terraform等工具实现自动化部署。”