Docker镜像仓库Harbor安装部署全流程指南

一、Harbor简介与核心价值

Harbor是由VMware公司开源的企业级Docker镜像仓库管理工具,提供镜像存储、权限控制、镜像签名、漏洞扫描等核心功能。相较于原生Docker Registry,Harbor的优势体现在:

  1. 基于角色的访问控制(RBAC)
  2. 镜像复制与同步能力
  3. 图形化Web管理界面
  4. 集成Clair进行漏洞扫描
  5. 支持AD/LDAP集成
  6. 镜像签名与验证机制

典型应用场景包括:

  • 构建企业私有镜像仓库
  • 实现跨数据中心的镜像分发
  • 满足金融、医疗等行业的合规要求
  • 支撑CI/CD流水线的镜像管理

二、安装环境准备

1. 硬件配置要求

组件 最低配置 推荐配置
CPU 2核 4核及以上
内存 4GB 8GB及以上
磁盘空间 40GB 200GB+(SSD)
网络带宽 100Mbps 千兆网络

2. 软件依赖检查

  1. # 检查Docker版本(需17.06+)
  2. docker --version
  3. # 检查Docker Compose版本(需1.18.0+)
  4. docker-compose --version
  5. # 安装依赖工具
  6. yum install -y wget curl unzip

3. 主机配置优化

  1. # 配置系统参数
  2. cat >> /etc/sysctl.conf <<EOF
  3. vm.max_map_count=262144
  4. net.ipv4.ip_forward=1
  5. EOF
  6. sysctl -p
  7. # 关闭防火墙(生产环境建议配置规则)
  8. systemctl stop firewalld
  9. systemctl disable firewalld

三、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. # 解压安装包
  4. tar xvf harbor-online-installer-v2.9.0.tgz
  5. cd harbor

2. 配置harbor.yml

  1. # 核心配置项说明
  2. hostname: registry.example.com # 必须为可解析的域名
  3. http:
  4. port: 80
  5. https:
  6. certificate: /data/cert/server.crt
  7. private_key: /data/cert/server.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. # filesystem配置示例
  16. filesystem:
  17. rootdirectory: /var/lib/harbor
  18. # S3配置示例
  19. # s3:
  20. # accesskey: xxx
  21. # secretkey: xxx
  22. # region: us-west-1
  23. # bucket: harbor-bucket

3. 执行安装脚本

  1. # 修改配置后执行
  2. ./install.sh --with-trivy --with-chartmuseum
  3. # 安装日志关键点
  4. # 1. 初始化数据库
  5. # 2. 生成自签名证书(如未配置HTTPS)
  6. # 3. 启动核心组件:
  7. # - core(API服务)
  8. # - registry(镜像存储)
  9. # - jobservice(任务调度)
  10. # - portal(Web界面)
  11. # - trivy(漏洞扫描)

4. 启动后验证

  1. # 检查容器状态
  2. docker-compose ps
  3. # 验证服务端口
  4. netstat -tulnp | grep 80
  5. # 访问Web界面
  6. # 浏览器访问 http://hostname
  7. # 默认账号:admin/Harbor12345

四、核心功能配置

1. 项目管理实践

  1. # 使用Harbor CLI创建项目
  2. curl -u "admin:Harbor12345" -X POST -H "Content-Type: application/json" \
  3. -d '{"project_name": "devops", "public": false}' \
  4. http://registry.example.com/api/v2.0/projects
  5. # 项目权限配置建议:
  6. # - 开发环境:开放pull权限
  7. # - 生产环境:严格RBAC控制
  8. # - 公共项目:启用内容信任

2. 镜像复制策略

  1. # 复制规则配置示例
  2. replication:
  3. - name: prod-to-dev
  4. disabled: false
  5. src_registry:
  6. url: http://registry.example.com
  7. insecure: true
  8. dest_registry:
  9. url: http://dev-registry.example.com
  10. insecure: true
  11. dest_namespace: "devops/*"
  12. trigger:
  13. type: manual
  14. filters:
  15. tag_filter:
  16. pattern: "v*"

3. 漏洞扫描配置

  1. # 启用每日扫描任务
  2. docker exec -it harbor-jobservice /bin/sh
  3. crontab -e
  4. # 添加:
  5. 0 2 * * * /harbor/scan_all.sh
  6. # 扫描结果查看
  7. curl -u "admin:Harbor12345" \
  8. http://registry.example.com/api/v2.0/projects/library/repositories/nginx/artifacts/1.23/vulnerabilities

五、运维管理最佳实践

1. 备份恢复方案

  1. # 数据库备份
  2. docker exec -it harbor-db \
  3. pg_dump -U postgres -h 127.0.0.1 registry > harbor_db.sql
  4. # 配置备份
  5. cp -r /var/lib/harbor /backup/harbor_config_$(date +%Y%m%d)
  6. # 恢复流程
  7. 1. 停止服务:docker-compose down
  8. 2. 恢复数据库:psql -U postgres registry < backup.sql
  9. 3. 恢复配置:cp -r /backup/harbor_config/* /var/lib/harbor/
  10. 4. 重启服务:docker-compose up -d

2. 性能优化建议

  1. 存储优化:

    • 使用SSD存储镜像
    • 配置存储类(StorageClass)
    • 定期清理未使用的镜像
  2. 网络优化:

    • 启用HTTP/2协议
    • 配置CDN加速
    • 使用镜像加速器
  3. 数据库优化:

    • 调整PostgreSQL配置参数
    • 定期执行VACUUM FULL
    • 考虑读写分离架构

3. 监控告警配置

  1. # Prometheus监控配置示例
  2. scrape_configs:
  3. - job_name: 'harbor'
  4. metrics_path: '/api/v2.0/metrics'
  5. static_configs:
  6. - targets: ['registry.example.com:80']
  7. basic_auth:
  8. username: 'prometheus'
  9. password: 'prom-password'
  10. # 告警规则示例
  11. groups:
  12. - name: harbor.rules
  13. rules:
  14. - alert: HighDiskUsage
  15. expr: (1 - (node_filesystem_avail_bytes{fstype="xfs"} / node_filesystem_size_bytes{fstype="xfs"})) * 100 > 85
  16. for: 10m
  17. labels:
  18. severity: warning
  19. annotations:
  20. summary: "Harbor存储空间不足"

六、常见问题解决方案

1. 证书配置问题

现象:浏览器提示”您的连接不是私密连接”
解决

  1. 生成自签名证书:
    1. openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    2. -keyout /data/cert/server.key -out /data/cert/server.crt \
    3. -subj "/CN=registry.example.com"
  2. 配置主机信任:
    1. # Linux客户端
    2. sudo cp /data/cert/server.crt /etc/pki/ca-trust/source/anchors/
    3. sudo update-ca-trust

2. 镜像推送失败

错误示例denied: requested access to the resource is denied
排查步骤

  1. 检查项目权限
  2. 验证登录状态:
    1. docker login registry.example.com
  3. 检查镜像命名规范:
    1. # 正确格式
    2. docker tag nginx registry.example.com/project-name/nginx:v1

3. 性能瓶颈分析

诊断工具

  1. 容器资源监控:
    1. docker stats
  2. 数据库性能分析:
    1. -- PostgreSQL慢查询日志
    2. ALTER SYSTEM SET log_min_duration_statement = '1000';
  3. 网络延迟测试:
    1. curl -o /dev/null -s -w '%{time_total}\n' http://registry.example.com/v2/_catalog

七、升级与扩展指南

1. 版本升级流程

  1. # 1. 备份数据
  2. ./prepare --conf harbor.yml --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. ./install.sh --with-trivy --with-chartmuseum --upgrade
  7. # 4. 验证升级
  8. docker-compose ps

2. 集群部署方案

架构组成

  • 主节点:API服务、数据库
  • 从节点:镜像存储、任务执行
  • 负载均衡:Nginx或HAProxy

配置示例

  1. # 主节点配置
  2. core:
  3. data_volume: /var/lib/harbor
  4. trivy:
  5. ignore_unfixed: false
  6. skip_update: false
  7. # 从节点配置(harbor.yml)
  8. replication:
  9. mode: slave
  10. master_uri: https://master.example.com

3. 高可用设计

推荐方案

  1. 数据库集群:PostgreSQL流复制
  2. 存储冗余:分布式文件系统(如Ceph)
  3. 服务冗余:至少3个节点部署
  4. 负载均衡:Keepalived+Nginx

健康检查配置

  1. upstream harbor {
  2. server 192.168.1.101:80 max_fails=3 fail_timeout=30s;
  3. server 192.168.1.102:80 max_fails=3 fail_timeout=30s;
  4. server 192.168.1.103:80 max_fails=3 fail_timeout=30s;
  5. }
  6. server {
  7. listen 80;
  8. location / {
  9. proxy_pass http://harbor;
  10. proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
  11. }
  12. }

结语

Harbor作为企业级Docker镜像仓库解决方案,其安装部署涉及环境准备、配置优化、功能配置、运维管理等多个层面。本文详细阐述了从单机部署到集群高可用的完整实施路径,特别强调了安全配置、性能优化和故障处理等关键环节。实际部署时,建议结合企业具体需求进行定制化配置,并建立完善的监控告警体系,确保镜像仓库的稳定运行。”