Docker企业级镜像仓库Harbor搭建与配置全攻略

Docker企业级镜像仓库Harbor搭建与配置全攻略

一、Harbor概述:企业级镜像仓库的核心价值

Harbor是由VMware开源的企业级Docker Registry项目,专为解决生产环境镜像管理痛点而设计。相较于开源Docker Registry,Harbor提供三大核心优势:

  1. 安全加固:支持基于角色的访问控制(RBAC)、镜像签名、漏洞扫描等安全功能
  2. 管理便捷:提供Web管理界面,支持项目级权限管理、镜像复制策略配置
  3. 高可用设计:支持多节点部署、分布式存储、负载均衡等企业级特性

典型应用场景包括:

  • 跨团队镜像共享与权限控制
  • 镜像版本管理与审计追踪
  • 混合云环境下的镜像同步
  • 符合等保2.0要求的镜像安全存储

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

2.1 基础环境要求

组件 最低配置 推荐配置
服务器 2核4G 4核8G+
磁盘空间 40GB(仅存储) 100GB+(含备份)
操作系统 CentOS 7/Ubuntu 18.04+ CentOS 8/Ubuntu 20.04+
Docker 18.09+ 20.10+
Docker Compose 1.25+ 1.29+

2.2 网络配置要点

  • 必须配置静态IP地址
  • 开放端口:80(HTTP)、443(HTTPS)、22(SSH管理)
  • 建议配置DNS解析(如harbor.example.com)
  • 防火墙规则示例:
    1. # CentOS 7示例
    2. firewall-cmd --permanent --add-port={80,443,22}/tcp
    3. firewall-cmd --reload

三、安装部署:从零到一的完整流程

3.1 依赖安装

  1. # 安装Docker
  2. curl -fsSL https://get.docker.com | sh
  3. systemctl enable --now docker
  4. # 安装Docker Compose
  5. curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  6. chmod +x /usr/local/bin/docker-compose

3.2 Harbor安装包获取

  1. # 下载最新稳定版(示例为2.4.1)
  2. wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz
  3. tar xvf harbor-offline-installer-v2.4.1.tgz
  4. cd harbor

3.3 配置文件修改

编辑harbor.yml核心配置项:

  1. hostname: harbor.example.com # 必须与证书CN一致
  2. http:
  3. port: 80
  4. https:
  5. port: 443
  6. certificate: /data/cert/harbor.crt
  7. private_key: /data/cert/harbor.key
  8. harbor_admin_password: Harbor12345 # 初始管理员密码
  9. database:
  10. password: root123
  11. max_open_conns: 1000
  12. max_idle_conns: 50

3.4 安装执行

  1. # 生成自签名证书(生产环境应使用CA证书)
  2. mkdir -p /data/cert
  3. openssl req -newkey rsa:4096 -nodes -sha256 -keyout /data/cert/harbor.key \
  4. -x509 -days 365 -out /data/cert/harbor.crt \
  5. -subj "/CN=harbor.example.com/O=example Inc./C=CN"
  6. # 执行安装
  7. ./install.sh

四、基础配置:从安装到可用

4.1 初始化登录

  1. docker login harbor.example.com
  2. # 输入用户名admin和配置的密码

4.2 项目创建与管理

通过Web界面(https://harbor.example.com)或API创建项目:

  1. # 使用Harbor API创建项目
  2. curl -u "admin:Harbor12345" -X POST -H "Content-Type: application/json" \
  3. -d '{"project_name": "devops", "public": false}' \
  4. "https://harbor.example.com/api/v2.0/projects"

4.3 镜像推送测试

  1. # 标记并推送镜像
  2. docker tag nginx:latest harbor.example.com/devops/nginx:v1
  3. docker push harbor.example.com/devops/nginx:v1

五、高级配置:企业级特性实践

5.1 复制策略配置

  1. # 在harbor.yml中配置复制适配器
  2. replication:
  3. - name: "aliyun-mirror"
  4. disabled: false
  5. src_registry:
  6. url: "https://harbor.example.com"
  7. insecure: false
  8. dest_registries:
  9. - url: "https://registry.cn-hangzhou.aliyuncs.com"
  10. insecure: false
  11. dest_namespace: "devops-mirror"
  12. trigger:
  13. type: "manual"
  14. filters:
  15. project: ["devops"]
  16. tag: ["v*"]

5.2 漏洞扫描配置

  1. 启用Clair扫描器(Harbor内置)
  2. 配置扫描策略:
    1. # 设置每日凌晨3点自动扫描
    2. 0 3 * * * /usr/bin/docker exec -it harbor-jobservice \
    3. /harbor/scanAll.sh --project devops

5.3 日志管理方案

  1. # 日志轮转配置示例
  2. /var/log/harbor/*.log {
  3. daily
  4. missingok
  5. rotate 30
  6. compress
  7. delaycompress
  8. notifempty
  9. create 640 root adm
  10. }

六、安全实践:构建可信镜像体系

6.1 镜像签名流程

  1. # 生成GPG密钥对
  2. gpg --full-generate-key
  3. # 导出公钥
  4. gpg --export --armor > harbor-pubkey.gpg
  5. # 在Harbor中配置签名验证

6.2 访问控制策略

  1. # 示例RBAC配置
  2. auth_mode: db
  3. # 用户组配置
  4. usergroup:
  5. - name: "developers"
  6. ldap_group_dn: "cn=developers,ou=groups,dc=example,dc=com"
  7. roles:
  8. - project_admin
  9. - guest

6.3 审计日志分析

  1. -- 查询敏感操作日志
  2. SELECT operation, username, op_time
  3. FROM audit_log
  4. WHERE operation LIKE '%DELETE%'
  5. ORDER BY op_time DESC
  6. LIMIT 100;

七、运维管理:持续优化指南

7.1 备份恢复方案

  1. # 完整备份脚本示例
  2. #!/bin/bash
  3. BACKUP_DIR="/backup/harbor-$(date +%Y%m%d)"
  4. mkdir -p $BACKUP_DIR
  5. # 数据库备份
  6. docker exec -it harbor-db pg_dump -U postgres -F c registry > $BACKUP_DIR/registry.dump
  7. # 配置文件备份
  8. cp -r /etc/harbor $BACKUP_DIR/config
  9. # 镜像数据备份(rsync示例)
  10. rsync -avz /data/registry $BACKUP_DIR/

7.2 性能调优参数

  1. # PostgreSQL配置优化(pg_hba.conf)
  2. host all all 127.0.0.1/32 md5
  3. host registry registry 172.18.0.0/16 md5
  4. # 调整共享内存
  5. kernel.shmmax = 68719476736
  6. kernel.shmall = 4294967296

7.3 监控告警设置

  1. # Prometheus监控配置
  2. - job_name: 'harbor'
  3. static_configs:
  4. - targets: ['harbor.example.com:9090']
  5. metrics_path: '/metrics'
  6. params:
  7. module: [http_2xx]

八、常见问题解决方案

8.1 证书问题处理

  1. # 证书链不完整错误处理
  2. cat harbor.crt intermediate.crt > fullchain.crt
  3. # 更新Nginx配置
  4. sed -i 's|ssl_certificate.*|ssl_certificate /data/cert/fullchain.crt;|' \
  5. /etc/nginx/nginx.conf

8.2 存储空间不足

  1. # 清理未使用的镜像层
  2. docker run -it --rm \
  3. -v /var/lib/registry:/var/lib/registry \
  4. -v /data/registry:/data/registry \
  5. registry:2 garbage-collect \
  6. --delete-untagged=true /etc/registry/config.yml

8.3 性能瓶颈分析

  1. # 使用nmon监控系统资源
  2. nmon -f -s 10 -c 60 # 每10秒采样,共60次
  3. # 分析结果
  4. nmon_analyzer.sh nmon_data.nmon

九、升级与扩展指南

9.1 版本升级流程

  1. # 备份当前环境
  2. ./prepare.sh --backup --backup-dir=/backup/harbor-preupgrade
  3. # 下载新版本
  4. wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz
  5. # 执行升级
  6. ./install.sh --with-clair --with-notary

9.2 高可用部署架构

  1. 负载均衡器(HAProxy
  2. ├── Harbor节点1(主)
  3. ├── Registry
  4. ├── Database(主)
  5. └── Redis(主)
  6. └── Harbor节点2(备)
  7. ├── Registry
  8. ├── Database(备)
  9. └── Redis(备)

9.3 混合云部署方案

  1. # 多云复制配置示例
  2. replication:
  3. - name: "aws-mirror"
  4. dest_registries:
  5. - url: "https://account-id.dkr.ecr.region.amazonaws.com"
  6. insecure: false
  7. access_key: "AKIAXXXXXXXXXXXX"
  8. secret_key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"

十、最佳实践总结

  1. 安全三要素

    • 强制HTTPS访问
    • 实施镜像签名验证
    • 定期漏洞扫描
  2. 性能优化建议

    • 数据库独立部署
    • 启用存储驱动缓存
    • 配置合理的副本数
  3. 运维管理要点

    • 建立备份恢复SOP
    • 实施变更管理流程
    • 定期进行容量规划

通过系统化的Harbor部署与管理,企业可以构建起安全、高效、可扩展的容器镜像管理体系,为DevOps流程提供坚实的基础设施支撑。实际部署中应根据具体业务需求调整配置参数,并建立完善的监控告警机制确保系统稳定运行。