单机Harbor部署指南:安全高效的私有镜像仓库搭建

单机Harbor部署指南:安全高效的私有镜像仓库搭建

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

Harbor作为CNCF毕业项目,通过提供镜像管理、权限控制、漏洞扫描等企业级功能,已成为容器生态中不可或缺的私有镜像仓库解决方案。单机部署模式尤其适合以下场景:

  1. 开发测试环境:快速搭建隔离的镜像仓库,避免生产环境依赖
  2. 中小型企业:资源有限时构建轻量级CI/CD基础设施
  3. 边缘计算:在离线环境中管理特定区域的容器镜像
  4. 安全合规:满足金融、医疗等行业对数据本地化的严格要求

相较于集群部署,单机模式具有资源占用低(建议4核8G起)、部署简单、维护成本低等优势,但需注意做好数据备份和高可用设计。

二、环境准备与前置条件

硬件配置要求

组件 最低配置 推荐配置
CPU 2核 4核及以上
内存 4GB 8GB(生产环境)
磁盘 40GB(系统盘) 200GB+(数据盘)
网络 100Mbps 千兆网络

软件依赖检查

  1. # 检查Docker版本(需19.03+)
  2. docker --version
  3. # 检查Docker Compose版本(需1.25+)
  4. docker-compose --version
  5. # 系统参数优化
  6. echo "vm.max_map_count = 262144" >> /etc/sysctl.conf
  7. sysctl -p

网络规划要点

  1. 端口分配:默认使用80(HTTP)、443(HTTPS)、4443(Notary)
  2. 域名解析:建议配置内部域名(如harbor.example.com)
  3. 防火墙规则:开放TCP 80,443,4443端口

三、标准化部署流程

1. 下载安装包

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

2. 配置文件定制

编辑harbor.yml.tmpl生成配置文件:

  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_idle_conns: 50
  12. max_open_conns: 100
  13. storage_driver:
  14. name: filesystem
  15. fs_driver:
  16. rootdirectory: /var/lib/registry

3. 证书生成(自签名示例)

  1. mkdir -p /data/cert
  2. openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  3. -keyout /data/cert/harbor.key \
  4. -out /data/cert/harbor.crt \
  5. -subj "/CN=harbor.example.com"

4. 安装执行

  1. # 生成配置文件
  2. cp harbor.yml.tmpl harbor.yml
  3. # 启动安装(需root权限)
  4. sudo ./install.sh --with-trivy --with-chartmuseum

安装过程关键输出:

  1. [Step 5]: starting Harbor ...
  2. Creating network "harbor_harbor" with the default driver
  3. Creating harbor-log ... done
  4. Creating registry ... done
  5. Creating registryctl ... done
  6. Creating harbor-db ... done
  7. Creating harbor-portal ... done
  8. Creating harbor-core ... done
  9. Creating nginx ... done
  10. ----Harbor has been installed and started successfully.----

四、关键配置优化

1. 存储驱动选择

驱动类型 适用场景 配置要点
filesystem 单机部署/测试环境 需配置独立数据盘
s3 对象存储集成 需配置AWS凭证
azure 微软云存储 配置连接字符串
oss 阿里云OSS 配置Endpoint和AccessKey

示例S3配置:

  1. storage_driver:
  2. name: s3
  3. s3:
  4. accesskey: your-access-key
  5. secretkey: your-secret-key
  6. region: us-west-1
  7. bucket: harbor-registry
  8. encrypt: true

2. 认证模式配置

Harbor支持多种认证方式:

  1. # 数据库认证(默认)
  2. auth_mode: db_auth
  3. # LDAP集成示例
  4. auth_mode: ldap_auth
  5. ldap:
  6. url: ldap://ldap.example.com
  7. search_base: ou=users,dc=example,dc=com
  8. uid: uid
  9. filter: (objectClass=person)
  10. scope: 2
  11. timeout: 5

3. 漏洞扫描配置

启用Trivy扫描器需在安装时添加--with-trivy参数,配置要点:

  1. trivy:
  2. ignore_unfixed: false
  3. skip_update: false
  4. insecure: false
  5. severity: "UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL"
  6. debug_mode: false

五、运维管理最佳实践

1. 日常维护命令

  1. # 停止服务
  2. docker-compose down
  3. # 启动服务
  4. docker-compose up -d
  5. # 查看日志
  6. docker-compose logs -f
  7. # 备份数据
  8. tar -czf harbor-backup-$(date +%Y%m%d).tar.gz /var/lib/registry /data/database

2. 升级流程

  1. # 1. 下载新版本
  2. wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
  3. # 2. 备份当前配置
  4. cp harbor.yml harbor.yml.bak
  5. # 3. 执行升级
  6. sudo ./prepare --with-trivy
  7. sudo docker-compose down
  8. sudo docker-compose up -d

3. 监控指标

关键监控项:
| 指标类别 | 监控项 | 告警阈值 |
|————————|—————————————————-|————————|
| 性能指标 | 磁盘使用率 | >85% |
| | 内存使用率 | >90% |
| 业务指标 | 镜像拉取失败率 | >1% |
| | 扫描任务积压数 | >10 |
| 安全指标 | 高危漏洞镜像数量 | >0 |

六、常见问题解决方案

1. 登录失败排查

  1. # 检查认证服务状态
  2. docker ps | grep harbor-core
  3. # 查看认证日志
  4. docker logs harbor-core
  5. # 常见原因:
  6. # - 密码包含特殊字符(需URL编码)
  7. # - 时钟不同步(NTP服务异常)
  8. # - 数据库连接失败

2. 镜像推送缓慢优化

  1. # 修改core配置
  2. proxy:
  3. http_proxy:
  4. https_proxy:
  5. no_proxy: 127.0.0.1,localhost,.example.com
  6. # 调整registry缓存
  7. registry:
  8. cache:
  9. layer_cache_size: 10GB

3. 高可用设计建议

  1. 数据备份:每日自动备份registry数据和数据库
  2. 冷备方案:在另一台主机部署相同版本Harbor,定期同步数据
  3. 负载均衡:使用Nginx或HAProxy实现前端负载均衡
  4. 监控告警:集成Prometheus+Grafana实现可视化监控

七、进阶功能探索

1. 机器人账号管理

  1. # 创建机器人账号
  2. curl -X POST -u "admin:Harbor12345" \
  3. -H "Content-Type: application/json" \
  4. -d '{"project_id": 1, "name": "ci-robot", "expires_at": 1672531200}' \
  5. "http://harbor.example.com/api/v2.0/robots"
  6. # 获取机器人token
  7. curl -X POST -u "admin:Harbor12345" \
  8. -H "Content-Type: application/json" \
  9. -d '{"name": "ci-robot"}' \
  10. "http://harbor.example.com/api/v2.0/users/current/secrets"

2. 镜像签名验证

  1. # 生成签名密钥对
  2. cosign generate-key-pair
  3. # 签名镜像
  4. cosign sign --key cosign.key harbor.example.com/library/nginx:latest
  5. # 验证签名
  6. cosign verify --key cosign.pub harbor.example.com/library/nginx:latest

3. 跨集群复制

  1. # 配置复制策略
  2. replication:
  3. - name: "prod-to-dev"
  4. enabled: true
  5. src_registry:
  6. url: "http://harbor.example.com"
  7. dest_registries:
  8. - name: "dev-harbor"
  9. url: "http://dev-harbor.example.com"
  10. insecure: true
  11. trigger:
  12. type: "manual"
  13. filters:
  14. - project: "library"
  15. tag_filter: "v*"

八、总结与展望

单机Harbor部署为企业提供了轻量级、高可控的镜像管理方案。通过本文介绍的标准化流程,开发者可以在2小时内完成从环境准备到生产就绪的全过程。未来随着容器技术的演进,Harbor将持续集成更多安全特性(如SBOM生成)、优化存储效率(如Zstandard压缩),并深化与Service Mesh的集成。建议运维团队建立定期升级机制(每季度评估新版本),同时关注CNCF官方安全公告,确保镜像仓库的安全性和合规性。