单机Harbor部署全攻略:从环境准备到运维实践

一、Harbor核心价值与单机部署场景

Harbor作为开源的企业级Docker镜像仓库,提供镜像存储、权限控制、漏洞扫描等核心功能。单机部署模式适用于开发测试环境、中小型企业私有云或边缘计算场景,具有资源占用低、维护简单的优势。相较于集群模式,单机版无需处理分布式协调问题,但需关注存储容量与高可用性设计。

1.1 典型应用场景

  • 开发环境:为CI/CD流水线提供私有镜像存储
  • 离线部署:在内网或无公网访问的环境中构建镜像仓库
  • 边缘计算:在资源受限的边缘节点部署轻量级仓库
  • 成本敏感型项目:避免集群模式带来的硬件与运维成本

1.2 单机部署架构

单机Harbor采用单节点架构,包含Core服务、数据库(PostgreSQL/MySQL)、Redis缓存、存储驱动(文件系统/S3/OSS)等组件。所有服务运行在同一主机,通过端口区分不同功能模块。

二、环境准备与前置条件

2.1 硬件配置要求

组件 最低配置 推荐配置
CPU 2核 4核及以上
内存 4GB 8GB及以上
磁盘 100GB(SSD优先) 500GB+(根据镜像量调整)
网络 100Mbps带宽 千兆网络

2.2 软件依赖检查

  1. # 检查Docker版本(需19.03+)
  2. docker --version
  3. # 检查Docker Compose版本(需1.25+)
  4. docker-compose --version
  5. # 检查系统内核参数(需支持overlay2存储驱动)
  6. grep overlay /proc/filesystems

2.3 操作系统优化

  1. # 修改系统参数(以CentOS 7为例)
  2. cat >> /etc/sysctl.conf <<EOF
  3. vm.max_map_count=262144
  4. net.core.somaxconn=65535
  5. EOF
  6. sysctl -p
  7. # 调整文件描述符限制
  8. cat >> /etc/security/limits.conf <<EOF
  9. * soft nofile 65535
  10. * hard nofile 65535
  11. EOF

三、标准化部署流程

3.1 下载安装包

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

3.2 配置文件详解

修改harbor.yml.tmpl(或复制为harbor.yml)重点参数:

  1. hostname: registry.example.com # 需配置DNS或hosts解析
  2. http:
  3. port: 80 # 或使用443启用HTTPS
  4. # tls:
  5. # certificate: /path/to/cert.pem
  6. # private_key: /path/to/key.pem
  7. # 存储配置(文件系统示例)
  8. storage:
  9. filesystem:
  10. rootdirectory: /data/harbor
  11. # S3配置示例:
  12. # s3:
  13. # accesskey: xxx
  14. # secretkey: xxx
  15. # region: us-west-1
  16. # bucket: harbor-bucket
  17. database:
  18. password: root123 # 生产环境需修改
  19. max_open_conns: 100
  20. max_idle_conns: 50
  21. # 配置管理员密码
  22. harbor_admin_password: Harbor12345

3.3 安装执行

  1. # 生成自签名证书(可选)
  2. openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  3. -keyout /etc/pki/tls/private/harbor.key \
  4. -out /etc/pki/tls/certs/harbor.crt \
  5. -subj "/CN=registry.example.com"
  6. # 安装Harbor
  7. ./install.sh --with-clair # 可选添加漏洞扫描组件

四、运维优化实践

4.1 存储管理策略

  • 镜像清理:配置gc.cron定期执行垃圾回收
    1. # 手动执行GC(需进入Harbor容器)
    2. docker exec -it harbor-core /harbor/gc.sh
  • 存储扩容:使用LVM管理磁盘空间,支持在线扩容
    1. pvcreate /dev/sdb
    2. vgextend vg_harbor /dev/sdb
    3. lvextend -l +100%FREE /dev/vg_harbor/lv_harbor
    4. resize2fs /dev/vg_harbor/lv_harbor

4.2 性能调优参数

参数 默认值 推荐值 说明
max_job_workers 3 CPU核数×2 异步任务并发数
token_expiration 30min 24h 令牌有效期
project_quota 无限制 500GB 单项目存储配额

4.3 备份恢复方案

  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 -h 127.0.0.1 registry > $BACKUP_DIR/registry.sql
  7. # 备份配置文件
  8. cp -r /data/harbor/config $BACKUP_DIR/
  9. cp harbor.yml $BACKUP_DIR/
  10. # 备份镜像数据(rsync增量备份)
  11. rsync -avz --delete /data/harbor/ $BACKUP_DIR/data/

五、安全加固建议

5.1 访问控制策略

  • 启用RBAC权限模型
  • 配置项目级访问控制
  • 限制匿名访问:
    1. # 在harbor.yml中设置
    2. auth_mode: db_auth # 或ldap_auth
    3. anonymous_access: false

5.2 传输安全

  • 强制HTTPS访问
  • 启用HSTS头:
    1. # 在nginx配置中添加
    2. add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

5.3 审计日志

  • 配置日志轮转:
    1. # /etc/logrotate.d/harbor
    2. /var/log/harbor/*.log {
    3. daily
    4. missingok
    5. rotate 14
    6. compress
    7. delaycompress
    8. notifempty
    9. copytruncate
    10. }

六、故障排查指南

6.1 常见问题处理

现象 解决方案
502 Bad Gateway 检查nginx容器日志,重启服务
数据库连接失败 验证数据库密码,检查磁盘空间
镜像推送超时 调整upload_chunk_size参数
漏洞扫描失败 检查Clair数据库连接,重启clair服务

6.2 日志分析技巧

  1. # 查看核心服务日志
  2. docker-compose logs -f core
  3. # 搜索错误关键词
  4. journalctl -u docker --no-pager | grep "error"
  5. # 分析访问日志(需配置)
  6. tail -f /var/log/harbor/core.log | grep "500"

七、升级与扩展建议

7.1 版本升级流程

  1. # 1. 备份当前环境
  2. ./prepare.sh --backup backup_dir
  3. # 2. 下载新版本并解压
  4. wget new_version.tgz
  5. tar xvf new_version.tgz
  6. # 3. 执行升级
  7. cd new_version
  8. ./install.sh --upgrade

7.2 横向扩展方案

当单机性能不足时,可考虑:

  1. 添加Notary服务实现镜像签名
  2. 部署Trivy作为独立漏洞扫描器
  3. 使用NFS/Ceph作为共享存储
  4. 配置前端负载均衡器(如Nginx)实现高可用

八、最佳实践总结

  1. 资源隔离:使用独立磁盘分区存储镜像数据
  2. 监控告警:集成Prometheus+Grafana监控关键指标
  3. 定期维护:每月执行健康检查与性能基准测试
  4. 文档管理:维护完整的部署文档与变更记录

通过遵循本指南,开发者可在30分钟内完成单机Harbor的标准化部署,并获得一个稳定、安全、高效的私有镜像仓库。实际生产环境中,建议结合企业具体需求进行定制化配置,并建立完善的运维管理体系。