在CentOS 7上快速部署Harbor镜像仓库指南

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

一、Harbor镜像仓库概述

Harbor是由VMware开源的企业级私有Docker镜像仓库,提供基于角色的访问控制、镜像复制、漏洞扫描、审计日志等企业级功能。相较于开源Docker Registry,Harbor通过Web界面管理、AD/LDAP集成和镜像签名验证等功能,成为企业容器化部署的首选方案。

在容器化技术普及的今天,私有镜像仓库的重要性日益凸显。它不仅能保障镜像安全,避免依赖公共仓库的网络风险,还能通过镜像复制实现多数据中心部署,提升应用交付效率。Harbor的这些特性使其在金融、医疗等对数据安全要求严格的行业得到广泛应用。

二、环境准备与前置条件

1. 系统要求

  • CentOS 7.4及以上版本(推荐7.6/7.9)
  • 至少4GB内存(生产环境建议8GB+)
  • 20GB以上可用磁盘空间
  • 关闭SELinux或设置为permissive模式

2. 网络配置

  1. # 检查防火墙状态
  2. systemctl status firewalld
  3. # 开放必要端口(示例)
  4. firewall-cmd --permanent --add-port={80,443,4443}/tcp
  5. firewall-cmd --reload

建议配置静态IP地址,避免DHCP变更导致的服务中断。对于生产环境,应规划独立的VLAN或子网。

3. 依赖安装

  1. # 安装基础工具
  2. yum install -y wget curl unzip git
  3. # 安装Docker CE(19.03+)
  4. yum install -y yum-utils
  5. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  6. yum install -y docker-ce docker-ce-cli containerd.io
  7. systemctl enable --now docker
  8. # 安装Docker Compose(1.25+)
  9. curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  10. chmod +x /usr/local/bin/docker-compose

三、Harbor安装部署流程

1. 下载安装包

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

建议使用在线安装包(包含所有依赖),离线包适用于无外网环境。

2. 配置文件修改

编辑harbor.yml配置文件:

  1. hostname: registry.example.com # 必须为可解析的域名
  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. max_idle_conns: 50
  11. max_open_conns: 100

关键配置项说明

  • hostname:必须配置为实际域名,否则会导致部分功能异常
  • storage_driver:支持filesystem(默认)、s3azure
  • clair:是否启用漏洞扫描(需额外配置)
  • notary:镜像签名功能配置

3. 安装执行

  1. # 执行安装前检查
  2. ./prepare
  3. # 启动安装
  4. ./install.sh

安装过程会执行以下操作:

  1. 创建必要的Docker网络
  2. 启动PostgreSQL、Redis等依赖服务
  3. 初始化Harbor数据库
  4. 启动核心服务组件

4. 启动与验证

  1. # 使用docker-compose管理
  2. cd harbor
  3. docker-compose ps # 查看服务状态
  4. docker-compose logs -f # 查看实时日志
  5. # 验证服务
  6. curl -I http://registry.example.com

正常响应应包含200 OK状态码和Server: nginx头信息。

四、高级配置与管理

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 "/CN=registry.example.com"

修改harbor.yml后需重新执行./preparedocker-compose down/up

2. 用户与权限管理

通过Web界面(默认https://<hostname>)或API进行管理:

  1. # 使用Harbor CLI(需单独安装)
  2. harbor-cli user add --name testuser --email test@example.com --password Test123
  3. harbor-cli project create --name myproject --public

3. 镜像复制策略

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

  1. 在”Administration”->”Replications”创建规则
  2. 配置源项目和目标仓库(支持其他Harbor实例或Docker Hub)
  3. 设置触发方式(手动/定时/事件驱动)

4. 维护与升级

升级流程示例:

  1. # 备份数据
  2. docker-compose down
  3. tar czvf harbor-backup-$(date +%Y%m%d).tar.gz /data/database /data/registry
  4. # 下载新版本并更新配置
  5. wget https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-online-installer-v2.6.0.tgz
  6. # 修改harbor.yml后执行
  7. ./prepare
  8. docker-compose up -d

五、常见问题解决方案

1. 502 Bad Gateway错误

  • 检查Nginx容器日志:docker logs -f nginx
  • 常见原因:后端服务未启动、证书配置错误、内存不足

2. 镜像推送失败

  1. # 检查认证信息
  2. docker login registry.example.com
  3. # 验证网络连通性
  4. ping registry.example.com
  5. telnet registry.example.com 443

3. 磁盘空间不足

配置自动清理策略:

  1. # 在harbor.yml中添加
  2. trash:
  3. interval: 1440 # 每24小时清理
  4. retain: 360 # 保留最近360小时的删除记录

六、最佳实践建议

  1. 高可用部署:使用共享存储(NFS/GlusterFS)承载/data目录,配合Keepalived实现VIP切换
  2. 安全加固
    • 定期轮换管理员密码
    • 启用项目级别的访问控制
    • 配置日志审计策略
  3. 性能优化
    • 为Registry服务配置专用磁盘
    • 调整PostgreSQL的shared_buffers参数
    • 启用Nginx的gzip压缩

七、总结与展望

Harbor 2.x版本在稳定性、安全性和扩展性方面均有显著提升,特别是对Kubernetes的集成支持(如Helm Chart存储)。未来版本将进一步强化AI驱动的漏洞分析和多云管理能力。

通过本文的详细指导,读者可以完成从环境准备到生产部署的全流程操作。建议在实际部署前进行充分的测试验证,并根据业务需求定制配置参数。Harbor的模块化设计使其能够适应从开发测试到生产环境的各种场景需求。