在CentOS 7上快速搭建Harbor镜像仓库全攻略

在CentOS 7上安装部署Harbor镜像仓库

一、Harbor镜像仓库概述

Harbor是由VMware开源的企业级Docker Registry管理工具,提供基于角色的访问控制、镜像复制、漏洞扫描、审计日志等企业级功能。相较于原生Docker Registry,Harbor通过Web界面、API接口和CLI工具实现镜像的集中化管理,尤其适合需要多项目隔离、权限控制的团队使用。

在DevOps实践中,Harbor可作为CI/CD流水线的镜像存储中心,与Jenkins、GitLab等工具深度集成。其支持的镜像签名功能可确保镜像来源可信,而自动清理策略能有效控制存储空间占用。

二、环境准备与前置条件

2.1 系统要求

  • 操作系统:CentOS 7.6+(推荐最小化安装)
  • 硬件配置:2核CPU、4GB内存、40GB磁盘空间(生产环境建议8核16GB+)
  • 网络要求:开放80(HTTP)、443(HTTPS)、22(SSH)端口

2.2 依赖安装

  1. # 安装基础工具
  2. yum install -y wget curl epel-release
  3. # 安装Docker CE(需先配置YUM源)
  4. sudo yum install -y yum-utils
  5. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  6. sudo yum install -y docker-ce docker-ce-cli containerd.io
  7. # 启动Docker并设置开机自启
  8. systemctl enable --now docker
  9. # 安装Docker Compose(需Python环境)
  10. curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  11. chmod +x /usr/local/bin/docker-compose

2.3 防火墙配置

  1. firewall-cmd --permanent --add-service=http
  2. firewall-cmd --permanent --add-service=https
  3. firewall-cmd --reload

三、Harbor安装部署流程

3.1 下载安装包

  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 -C /opt/
  3. cd /opt/harbor

3.2 配置修改

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

  1. hostname: harbor.example.com # 需配置DNS解析或hosts文件
  2. http:
  3. port: 80
  4. https:
  5. certificate: /data/cert/server.crt # 需提前准备证书
  6. private_key: /data/cert/server.key
  7. harbor_admin_password: Harbor12345 # 默认管理员密码
  8. database:
  9. password: root123 # 数据库密码
  10. data_volume: /data # 数据存储目录

3.3 证书配置(HTTPS场景)

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

3.4 安装执行

  1. ./prepare # 生成配置文件
  2. ./install.sh # 启动安装

安装完成后,可通过docker-compose ps验证服务状态:

  1. Name Command State Ports
  2. ---------------------------------------------------------------------------------------------------
  3. harbor-core "/harbor/entrypoint.sh" Up
  4. harbor-db "docker-entrypoint.sh mysqld" Up
  5. harbor-jobservice "/harbor/entrypoint.sh" Up
  6. harbor-log "/bin/sh -c /usr/local/bin/ ..." Up 127.0.0.1:1514->10514/tcp
  7. harbor-portal "nginx -g daemon off;" Up
  8. nginx "nginx -g daemon off;" Up 0.0.0.0:80->8080/tcp
  9. redis "redis-server /etc/redis.conf" Up
  10. registry "/home/harbor/entrypoint.sh" Up
  11. registryctl "/home/harbor/start.sh" Up

四、Harbor高级配置

4.1 用户与项目管理

通过Web界面(默认http://<IP>)或API创建项目:

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

4.2 镜像复制策略

配置跨Harbor实例的镜像同步:

  1. 在”System Management”→”Replications”创建规则
  2. 设置源项目和目标端点(需提前配置目标Harbor的API访问)
  3. 配置触发方式(手动/定时/事件驱动)

4.3 漏洞扫描配置

  1. 安装Clair扫描器(Harbor 2.0+内置)
  2. 在”Configuration”→”System Settings”启用自动扫描
  3. 查看扫描报告:项目→”Repositories”→选择镜像→”Vulnerabilities”

五、运维与故障排查

5.1 日常维护命令

  1. # 停止服务
  2. cd /opt/harbor
  3. docker-compose down
  4. # 升级Harbor
  5. 1. 备份数据:`cp -r /data /data_backup`
  6. 2. 下载新版本安装包
  7. 3. 修改harbor.yml后执行:
  8. ```bash
  9. ./prepare
  10. docker-compose pull
  11. docker-compose up -d

5.2 常见问题处理

问题1:502 Bad Gateway错误

  • 检查Nginx容器日志:docker logs harbor-nginx
  • 常见原因:后端服务未启动或证书配置错误

问题2:镜像推送失败

  • 验证登录状态:docker login harbor.example.com
  • 检查项目权限:确保用户有push权限
  • 查看registry日志:docker logs registry

问题3:磁盘空间不足

  • 配置自动清理策略:
    1. # 在harbor.yml中添加
    2. trash:
    3. retain_interval: 7 # 保留天数
  • 手动清理:curl -X DELETE "http://harbor.example.com/api/v2.0/system/gc"

六、最佳实践建议

  1. 高可用架构

    • 使用NFS/GlusterFS共享存储
    • 配置Keepalived实现VIP切换
    • 数据库采用主从复制
  2. 安全加固

    • 启用HTTPS并配置HSTS
    • 定期轮换管理员密码
    • 限制管理员账户数量
  3. 性能优化

    • 调整Redis内存限制(/etc/redis.conf
    • 启用Registry缓存(配置cache.enabled: true
    • 对大文件镜像启用分块上传
  4. 监控方案

    • 集成Prometheus+Grafana监控
    • 配置Alertmanager告警规则
    • 记录关键操作审计日志

七、总结

通过本文的详细步骤,读者可在CentOS 7系统上完成Harbor镜像仓库的完整部署。从基础环境搭建到高级功能配置,覆盖了生产环境所需的核心要素。实际使用时,建议结合企业安全策略调整配置参数,并定期进行备份演练。Harbor的模块化设计使得后续功能扩展(如与LDAP集成、配置CI/CD插件)变得简单高效,为容器化应用交付提供了可靠的基础设施支持。