Harbor企业级镜像仓库安装全流程指南:从零到一搭建私有容器镜像中心

一、Harbor简介与企业级价值

Harbor是由VMware开源的企业级Docker Registry管理工具,专为解决企业级容器镜像管理痛点而设计。相较于原生Docker Registry,Harbor提供了用户权限管理、镜像复制、漏洞扫描、审计日志等核心功能,支持RBAC权限模型和LDAP/AD集成,满足金融、电信等行业对镜像安全性和合规性的严苛要求。

作为CNCF(云原生计算基金会)毕业项目,Harbor已形成成熟的社区生态,支持多架构部署(x86/ARM)和混合云环境。其核心组件包括:

  • Proxy:反向代理层,提供统一入口和SSL终止
  • Registry:存储镜像的核心服务
  • Core Services:包含API、认证、权限控制等模块
  • Database:存储元数据(MySQL/PostgreSQL)
  • Job Service:执行镜像扫描、复制等后台任务
  • Log Collector:集中收集日志

二、安装环境准备

1. 硬件配置建议

  • 基础配置:4核CPU、8GB内存、100GB磁盘(生产环境建议32GB+内存)
  • 存储选择:推荐使用独立存储卷(如NFS/iSCSI)存储镜像数据
  • 网络要求:千兆网卡,开放443(HTTPS)、80(HTTP)、22(SSH)端口

2. 软件依赖

  • 操作系统:CentOS 7/8、Ubuntu 18.04/20.04或RHEL 7/8
  • Docker版本:19.03+(需支持BuildKit)
  • Docker Compose:1.25.0+(用于编排服务)
  • 依赖包curl wget git jq等基础工具

3. 预安装检查

  1. # 检查Docker版本
  2. docker --version
  3. # 验证Docker Compose
  4. docker-compose version
  5. # 检查系统资源
  6. free -h
  7. df -h

三、Harbor安装全流程

1. 下载安装包

  1. # 获取最新版本(示例为v2.9.0)
  2. VERSION=2.9.0
  3. wget https://github.com/goharbor/harbor/releases/download/v${VERSION}/harbor-online-installer-v${VERSION}.tgz
  4. tar xzf harbor-online-installer-v*.tgz
  5. cd harbor

2. 配置Harbor

编辑harbor.yml核心配置文件:

  1. hostname: registry.example.com # 必须为FQDN或IP
  2. http:
  3. port: 80
  4. https:
  5. port: 443
  6. certificate: /data/cert/server.crt
  7. private_key: /data/cert/server.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:
  16. rootpath: /data/registry

关键配置项说明

  • hostname:必须与客户端访问地址一致,否则会导致证书错误
  • 存储驱动:生产环境建议使用filesystem(本地存储)或s3(对象存储)
  • 数据库:内置MariaDB默认配置仅适用于测试环境

3. 执行安装

  1. # 生成自签名证书(生产环境应使用CA签发证书)
  2. mkdir -p /data/cert
  3. openssl req -newkey rsa:4096 -nodes -sha256 -keyout /data/cert/server.key \
  4. -x509 -days 365 -out /data/cert/server.crt -subj "/CN=registry.example.com"
  5. # 启动安装
  6. ./install.sh --with-trivy --with-chartmuseum # 包含漏洞扫描和Chart仓库

安装过程输出示例:

  1. [Step 0]: checking installation environment ...
  2. [Step 1]: loading Harbor images ...
  3. [Step 2]: preparing environment ...
  4. [Step 3]: starting Harbor ...
  5. Creating network "harbor_harbor" with the default driver
  6. Creating harbor-log ... done
  7. Creating harbor-portal ... done
  8. Creating registryctl ... done
  9. Creating registry ... done
  10. Creating harbor-db ... done
  11. Creating redis ... done
  12. Creating trivy-adapter ... done
  13. Creating harbor-core ... done
  14. Creating harbor-jobservice ... done
  15. Creating nginx ... done
  16. ----Harbor has been installed and started successfully.----

四、安装后配置

1. 客户端配置

  1. # 配置Docker信任Harbor(需替换为实际地址)
  2. echo "192.168.1.100 registry.example.com" >> /etc/hosts
  3. # 登录Harbor
  4. docker login registry.example.com

2. 项目与用户管理

通过Web界面(https://registry.example.com)或API创建项目:

  1. # 使用Harbor CLI(需先安装)
  2. harbor-cli project create --name devteam --public false

3. 镜像复制策略

配置跨数据中心镜像同步:

  1. # 在harbor.yml中添加
  2. replication:
  3. - name: sync-to-dr
  4. disabled: false
  5. src_registry:
  6. url: https://registry.example.com
  7. insecure: false
  8. dest_registry:
  9. url: https://dr-registry.example.com
  10. insecure: false
  11. dest_namespace: library
  12. trigger:
  13. type: manual
  14. filters:
  15. tag_filter:
  16. mode: inclusive
  17. tags:
  18. - latest
  19. - v*

五、常见问题解决

1. 证书错误处理

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

  1. # 方法1:将自签名证书加入系统信任
  2. sudo cp /data/cert/server.crt /etc/pki/ca-trust/source/anchors/
  3. sudo update-ca-trust
  4. # 方法2:修改Docker配置(不推荐生产环境)
  5. echo '{"insecure-registries":["registry.example.com"]}' > /etc/docker/daemon.json
  6. systemctl restart docker

2. 存储空间不足

监控命令

  1. # 查看Registry存储使用情况
  2. du -sh /data/registry/docker/registry/v2/repositories/
  3. # 清理未使用的镜像层
  4. docker run -it --rm \
  5. -v /var/run/docker.sock:/var/run/docker.sock \
  6. -v /etc:/etc \
  7. docker/compose:1.29.2 \
  8. -f /path/to/docker-compose.yml \
  9. down -v

3. 性能优化建议

  • 数据库调优:修改harbor.yml中的max_connections为200+
  • 缓存配置:在Nginx配置中添加镜像缓存:
    1. proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=harbor_cache:10m inactive=7d;
    2. location /v2/ {
    3. proxy_cache harbor_cache;
    4. proxy_cache_valid 200 302 7d;
    5. }
  • 水平扩展:对高并发场景,可部署多个Job Service实例

六、企业级部署最佳实践

  1. 高可用架构

    • 使用Keepalived+VIP实现Nginx负载均衡
    • 数据库主从复制(建议使用外部MySQL集群)
    • 对象存储(如MinIO/AWS S3)作为后端存储
  2. 安全加固

    • 启用双因素认证(OAUTH2集成)
    • 定期执行trivy-adapter漏洞扫描
    • 实施镜像签名验证(Notary集成)
  3. 运维监控

    • 集成Prometheus+Grafana监控指标
    • 配置ELK收集日志
    • 设置镜像推送/拉取告警规则

七、升级与维护

1. 版本升级流程

  1. # 1. 备份数据
  2. docker-compose stop
  3. tar czf harbor-backup-$(date +%Y%m%d).tar.gz /data
  4. # 2. 下载新版本
  5. wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz
  6. # 3. 执行升级
  7. cd harbor
  8. ./prepare --upgrade
  9. docker-compose up -d

2. 日常维护任务

  • 每周执行docker system prune -af清理无用资源
  • 每月检查/var/log/harbor/目录大小
  • 每季度更新基础镜像(如alpineubuntu

通过以上完整流程,企业可快速构建符合安全标准的私有容器镜像仓库。Harbor的模块化设计使得其既能满足中小企业的轻量级部署需求,也可通过集群化扩展支撑大型企业的镜像管理规模。实际部署时建议先在测试环境验证配置,再逐步迁移生产环境。