Harbor实战:企业级镜像仓库搭建全记录

一、引言:为什么选择Harbor?

在企业级容器化部署中,镜像仓库是连接开发与运维的核心枢纽。传统公有云镜像仓库(如Docker Hub)存在网络依赖、数据安全、访问控制不足等问题,而Harbor作为VMware开源的企业级镜像仓库解决方案,凭借其高安全性、可扩展性、多租户支持等特性,成为金融、电信、制造等行业构建私有镜像仓库的首选。

本文以CentOS 7系统为例,详细记录Harbor的安装、配置及优化过程,帮助开发者快速搭建符合企业需求的镜像仓库。

二、环境准备:前置条件与工具

1. 服务器配置要求

  • 操作系统:CentOS 7/8、Ubuntu 18.04/20.04等Linux发行版(本文以CentOS 7为例)。
  • 硬件资源:建议4核CPU、8GB内存、50GB以上磁盘空间(根据镜像存储量调整)。
  • 网络要求:需开放80(HTTP)、443(HTTPS)、22(SSH)端口,若使用Notary需开放4443端口。

2. 依赖工具安装

  1. # 安装Docker(Harbor依赖Docker运行)
  2. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. sudo yum install -y docker-ce docker-ce-cli containerd.io
  5. sudo systemctl enable --now docker
  6. # 安装Docker Compose(Harbor通过Docker Compose部署)
  7. 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
  8. sudo chmod +x /usr/local/bin/docker-compose

3. 域名与证书准备

Harbor默认使用HTTPS,需准备域名及SSL证书:

  • 域名:如harbor.example.com(需配置DNS解析)。
  • 证书:推荐使用Let’s Encrypt免费证书或企业CA签发的证书,将证书文件(harbor.crt)和私钥文件(harbor.key)放置在/data/cert/目录下。

三、安装步骤:从下载到启动

1. 下载Harbor安装包

访问Harbor官方GitHub(https://github.com/goharbor/harbor/releases),选择最新稳定版(如v2.5.0),下载二进制包:

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

2. 配置Harbor

修改harbor.yml文件,关键配置项如下:

  1. # 主机名(必须与域名一致)
  2. hostname: harbor.example.com
  3. # HTTPS配置
  4. https:
  5. certificate: /data/cert/harbor.crt
  6. private_key: /data/cert/harbor.key
  7. # 管理员密码(默认Harbor12345,建议修改)
  8. harbor_admin_password: StrongPassword@123
  9. # 数据库密码(可选修改)
  10. database:
  11. password: root123
  12. # 存储驱动(支持filesystem、s3、azure等)
  13. storage_driver:
  14. name: filesystem
  15. settings:
  16. rootdirectory: /data

3. 执行安装脚本

  1. # 安装前检查依赖
  2. sudo ./prepare
  3. # 启动Harbor(后台运行)
  4. sudo docker-compose up -d

安装完成后,通过docker ps检查容器状态,确保coredatabaseregistry等容器均处于Up状态。

四、配置优化:安全与性能提升

1. 启用访问控制

Harbor支持多种认证方式:

  • 本地用户:通过Web界面或API创建用户,分配项目权限。
  • LDAP集成:与企业AD/LDAP对接,实现单点登录。
  1. # 在harbor.yml中启用LDAP
  2. auth_mode: ldap
  3. ldap:
  4. url: ldap://ad.example.com
  5. search_dn: cn=admin,dc=example,dc=com
  6. search_password: adminpass
  7. base_dn: dc=example,dc=com
  8. uid: sAMAccountName
  9. filter: (objectClass=person)

2. 镜像复制策略

通过“系统管理→复制管理”配置镜像同步规则,例如将生产环境镜像同步至灾备仓库:

  • 源仓库https://harbor.example.com
  • 目标仓库https://backup-harbor.example.com
  • 触发方式:定时同步或手动触发。

3. 日志与监控

  • 日志收集:配置ELK或Fluentd收集Harbor容器日志,便于故障排查。
  • 监控告警:通过Prometheus+Grafana监控仓库存储量、请求延迟等指标,设置阈值告警。

五、常见问题与解决方案

1. 安装失败:端口冲突

现象docker-compose up报错Port 80 is already in use

解决

  1. # 查找占用端口的进程
  2. sudo netstat -tulnp | grep :80
  3. # 停止冲突服务(如Nginx)
  4. sudo systemctl stop nginx

2. 登录失败:证书问题

现象docker login harbor.example.com报错x509: certificate signed by unknown authority

解决

  • 将自签名证书添加至Docker信任列表:
    1. sudo mkdir -p /etc/docker/certs.d/harbor.example.com
    2. sudo cp /data/cert/harbor.crt /etc/docker/certs.d/harbor.example.com/ca.crt
    3. sudo systemctl restart docker

3. 性能瓶颈:存储I/O过高

现象:镜像推送/拉取速度慢,磁盘I/O等待高。

优化建议

  • 使用SSD或分布式存储(如Ceph)替代本地磁盘。
  • 调整Harbor的registry容器参数,增加缓存大小:
    1. # 在docker-compose.yml中修改
    2. registry:
    3. environment:
    4. REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR: inmemory

六、总结:Harbor的企业级价值

通过本次安装实践,Harbor展现了其作为企业级镜像仓库的核心优势:

  1. 安全可控:支持HTTPS、RBAC权限、镜像签名(Notary),满足等保2.0要求。
  2. 高效运维:提供Web界面、API、CLI多种管理方式,降低学习成本。
  3. 生态兼容:无缝对接Kubernetes、Jenkins等工具,支撑CI/CD流水线。

对于计划构建私有镜像仓库的企业,建议从小规模试点开始,逐步扩展至多节点集群部署,同时关注Harbor官方文档(https://goharbor.io/docs/)以获取最新功能更新。