在 CentOS 7 上部署 Harbor:企业级镜像仓库搭建指南

一、Harbor 镜像仓库简介

Harbor 是由 VMware 推出的开源企业级 Docker Registry 管理工具,提供基于角色的访问控制、镜像复制、漏洞扫描、审计日志等高级功能。相较于原生 Docker Registry,Harbor 更适合企业级生产环境使用,能有效解决镜像管理、权限控制和安全审计等问题。

在 DevOps 实践中,Harbor 可作为统一的镜像仓库,实现开发、测试、生产环境的镜像版本控制,配合 CI/CD 流水线实现自动化部署。其多租户管理功能还能满足大型企业的组织架构需求。

二、环境准备与前提条件

1. 系统要求

  • CentOS 7.6 或更高版本(推荐最小化安装)
  • 至少 4GB 内存(生产环境建议 8GB+)
  • 至少 40GB 可用磁盘空间
  • 具备 root 权限或 sudo 权限的用户

2. 软件依赖

  1. # 安装基础依赖
  2. yum install -y epel-release
  3. yum install -y wget curl unzip git
  4. # 安装 Docker CE(Harbor 运行依赖)
  5. yum install -y yum-utils device-mapper-persistent-data lvm2
  6. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  7. yum install -y docker-ce docker-ce-cli containerd.io
  8. systemctl enable --now docker

3. 网络配置

  • 确保服务器有固定 IP 地址
  • 开放 80/443 端口(HTTP/HTTPS)
  • 开放 22 端口(SSH 管理)
  • 配置防火墙规则:
    1. firewall-cmd --permanent --add-port={80,443,22}/tcp
    2. firewall-cmd --reload

三、Harbor 安装部署流程

1. 下载安装包

访问 Harbor 官方发布页 获取最新版本,推荐使用离线安装包:

  1. wget https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-offline-installer-v2.9.0.tgz
  2. tar xzf harbor-offline-installer-v2.9.0.tgz
  3. cd harbor

2. 配置修改

编辑 harbor.yml 配置文件(关键参数说明):

  1. hostname: registry.example.com # 修改为实际域名或IP
  2. http:
  3. port: 80
  4. https:
  5. certificate: /data/cert/server.crt # HTTPS证书路径
  6. private_key: /data/cert/server.key
  7. harbor_admin_password: Harbor12345 # 初始管理员密码
  8. database:
  9. password: root123 # 数据库密码
  10. max_idle_conns: 50
  11. max_open_conns: 100

3. 生成自签名证书(测试环境)

生产环境建议使用正规 CA 签发的证书,测试环境可生成自签名证书:

  1. mkdir -p /data/cert
  2. openssl req -newkey rsa:4096 -nodes -sha256 -keyout /data/cert/server.key \
  3. -x509 -days 365 -out /data/cert/server.crt -subj "/CN=registry.example.com"

4. 执行安装

  1. ./install.sh --with-clair # 可选安装漏洞扫描组件Clair

安装过程会自动完成以下操作:

  • 创建 Docker 网络
  • 启动 PostgreSQL 数据库
  • 启动 Redis 缓存
  • 启动 Core 服务
  • 启动 Notary 签名服务
  • 启动 Portal Web 界面

四、Harbor 核心功能配置

1. 项目管理

通过 Web 界面创建项目时,可配置:

  • 镜像拉取权限(公开/私有)
  • 存储配额限制
  • 镜像自动清理策略
  • 复制策略(与其他Registry同步)

2. 用户与权限管理

支持多种认证方式:

  • 数据库认证(内置用户)
  • LDAP/AD 集成
  • OAuth2 认证

权限模型采用 RBAC,可精细控制:

  • 项目管理员
  • 开发者
  • 访客
  • 机器人账号(用于CI/CD)

3. 镜像复制策略

配置跨集群镜像同步示例:

  1. # 在目标Harbor的System->Replication页面创建
  2. {
  3. "name": "prod-to-dev",
  4. "src_registry": {
  5. "url": "https://prod-registry.example.com",
  6. "insecure": false
  7. },
  8. "dest_registry": {
  9. "url": "https://dev-registry.example.com",
  10. "insecure": false
  11. },
  12. "dest_namespace": "library",
  13. "trigger": {
  14. "type": "manual", # 可选manual/immediate/scheduled
  15. "schedule_param": {}
  16. },
  17. "filters": [
  18. {
  19. "type": "name",
  20. "pattern": "^nginx.*"
  21. }
  22. ]
  23. }

五、使用验证与维护

1. 基础操作验证

  1. # 登录Harbor
  2. docker login registry.example.com
  3. # 推送镜像
  4. docker tag nginx:latest registry.example.com/library/nginx:v1
  5. docker push registry.example.com/library/nginx:v1
  6. # 拉取镜像
  7. docker pull registry.example.com/library/nginx:v1

2. 日常维护命令

  1. # 停止服务
  2. docker-compose down
  3. # 启动服务
  4. docker-compose up -d
  5. # 查看日志
  6. docker-compose logs -f
  7. # 升级Harbor
  8. 1. 备份数据库和配置
  9. 2. 下载新版本安装包
  10. 3. 修改harbor.yml(保持原有配置)
  11. 4. 执行./prepare
  12. 5. 重启服务

3. 性能优化建议

  • 数据库优化:定期执行 vacuum full 清理碎片
  • 存储优化:配置对象存储(如S3/MinIO)作为后端
  • 网络优化:启用HTTP/2提升传输效率
  • 监控告警:集成Prometheus+Grafana监控

六、常见问题解决方案

1. 证书问题处理

错误现象:x509: certificate signed by unknown authority
解决方案:

  1. # 将自签名证书添加到Docker信任链
  2. mkdir -p /etc/docker/certs.d/registry.example.com
  3. cp /data/cert/server.crt /etc/docker/certs.d/registry.example.com/ca.crt
  4. systemctl restart docker

2. 端口冲突处理

若80/443端口被占用:

  1. # 修改harbor.yml
  2. http:
  3. port: 8080
  4. https:
  5. port: 8443

3. 存储空间不足

解决方案:

  • 扩展磁盘空间
  • 配置自动清理策略
  • 使用对象存储作为后端

七、最佳实践建议

  1. 高可用架构:建议部署主备Harbor实例,通过复制策略保持同步
  2. 安全加固
    • 定期更新Harbor版本
    • 启用镜像签名验证
    • 限制管理员权限
  3. 备份策略
    • 每日数据库备份
    • 配置文件版本控制
    • 存储快照
  4. CI/CD集成
    • 为每个项目创建专用机器人账号
    • 配置镜像自动构建和推送
    • 集成漏洞扫描结果到流水线

通过以上步骤,您可以在CentOS 7系统上成功部署一个功能完善的企业级镜像仓库。Harbor的强大功能不仅能满足日常的镜像管理需求,还能通过其高级特性提升整个DevOps流程的安全性和效率。