CentOS上高效部署Harbor镜像仓库全指南

一、环境准备与前置条件

Harbor作为企业级Docker镜像仓库,对运行环境有明确要求。在CentOS系统上部署前,需确保满足以下条件:

1.1 系统版本要求

Harbor官方推荐使用CentOS 7/8 LTS版本,本文以CentOS 7.9为例。需确认系统已更新至最新补丁:

  1. sudo yum update -y
  2. sudo reboot

1.2 依赖组件安装

Harbor依赖Docker和Docker Compose运行。首先安装Docker CE:

  1. # 卸载旧版本
  2. sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  3. # 安装依赖
  4. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  5. # 添加Docker仓库
  6. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  7. # 安装Docker CE
  8. sudo yum install -y docker-ce docker-ce-cli containerd.io
  9. # 启动服务
  10. sudo systemctl enable docker
  11. sudo systemctl start docker

安装Docker Compose(需1.18.0+版本):

  1. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. sudo chmod +x /usr/local/bin/docker-compose

1.3 硬件资源规划

建议配置:

  • CPU:4核以上
  • 内存:8GB以上(生产环境建议16GB+)
  • 磁盘:200GB以上(根据镜像存储需求调整)
  • 网络:千兆网卡

二、Harbor安装与配置

2.1 下载安装包

从Harbor官方GitHub Release页面下载最新稳定版(以v2.4.3为例):

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

2.2 配置文件修改

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

  1. # 主机名配置(必须为FQDN或IP)
  2. hostname: registry.example.com
  3. # HTTP/HTTPS配置
  4. https:
  5. certificate: /data/cert/server.crt
  6. private_key: /data/cert/server.key
  7. # 存储驱动配置(支持filesystem/s3/azure等)
  8. storage_driver:
  9. name: filesystem
  10. settings:
  11. rootdirectory: /data
  12. # 数据库配置(默认使用内置PostgreSQL)
  13. database:
  14. password: root123
  15. max_idle_conns: 50
  16. max_open_conns: 100
  17. # 认证模式(支持db_auth/ldap_auth/oauth_auth)
  18. auth_mode: db_auth

2.3 安装执行

执行安装脚本前,确保已配置好域名解析(或本地hosts文件):

  1. echo "192.168.1.100 registry.example.com" >> /etc/hosts

运行安装命令:

  1. sudo ./install.sh --with-clair --with-trivy # 可选添加漏洞扫描组件

安装完成后验证服务状态:

  1. docker-compose ps

三、安全加固最佳实践

3.1 HTTPS配置

生成自签名证书(生产环境建议使用CA签发证书):

  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 "/C=CN/ST=Beijing/L=Beijing/O=IT/CN=registry.example.com"

修改harbor.yml启用HTTPS后,重启服务:

  1. docker-compose down
  2. docker-compose up -d

3.2 访问控制

创建项目并设置权限:

  1. # 登录Harbor
  2. docker login registry.example.com
  3. # 创建项目(示例)
  4. curl -u admin:Harbor12345 \
  5. -X POST -H "Content-Type: application/json" \
  6. --data '{"project_name": "production", "public": false}' \
  7. https://registry.example.com/api/v2.0/projects

3.3 审计日志

配置日志轮转:

  1. # 编辑日志配置文件
  2. vi /etc/logrotate.d/harbor
  3. # 添加如下内容
  4. /var/log/harbor/*.log {
  5. daily
  6. rotate 7
  7. compress
  8. delaycompress
  9. missingok
  10. notifempty
  11. copytruncate
  12. }

四、运维管理指南

4.1 日常维护

  • 备份策略
    ```bash

    备份数据库

    docker exec -it harbor-db pgdump -U postgres -d registry > /backup/registry$(date +%Y%m%d).sql

备份配置

cp -r /data/config /backup/config_$(date +%Y%m%d)

  1. - **升级流程**:
  2. ```bash
  3. # 1. 下载新版本
  4. # 2. 备份当前数据
  5. # 3. 执行升级命令
  6. cd harbor
  7. ./prepare --with-clair --with-trivy
  8. docker-compose down
  9. docker-compose up -d

4.2 性能优化

  • 存储优化

    • 启用存储驱动压缩
    • 配置定期清理未使用的镜像
    • 使用对象存储(如S3)作为后端
  • 网络优化

    • 配置Nginx反向代理缓存
    • 启用HTTP/2协议

4.3 故障排查

常见问题处理:

  1. 502 Bad Gateway

    • 检查Nginx容器日志
    • 验证后端服务状态
  2. 镜像推送失败

    • 检查磁盘空间
    • 验证认证信息
    • 查看Harbor核心日志
  3. 数据库连接失败

    • 检查PostgreSQL容器状态
    • 验证数据库配置参数

五、企业级部署建议

  1. 高可用架构

    • 使用Keepalived+VIP实现域名漂移
    • 数据库主从复制
    • 对象存储多AZ部署
  2. 监控方案

    • 集成Prometheus+Grafana监控
    • 配置告警规则(磁盘空间、响应时间等)
  3. CI/CD集成

    • Jenkins流水线配置示例:
      1. pipeline {
      2. agent any
      3. stages {
      4. stage('Build') {
      5. steps {
      6. sh 'docker build -t registry.example.com/production/app:$BUILD_NUMBER .'
      7. }
      8. }
      9. stage('Push') {
      10. steps {
      11. withCredentials([usernamePassword(credentialsId: 'harbor-cred', passwordVariable: 'PASS', usernameVariable: 'USER')]) {
      12. sh "docker login registry.example.com -u $USER -p $PASS"
      13. sh "docker push registry.example.com/production/app:$BUILD_NUMBER"
      14. }
      15. }
      16. }
      17. }
      18. }

通过以上系统化的部署方案,开发者可以在CentOS环境下快速构建安全、高效的Harbor镜像仓库,满足企业级容器镜像管理的需求。实际部署时,建议先在测试环境验证配置,再逐步推广到生产环境。