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

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

在容器化技术日益普及的今天,构建私有镜像仓库已成为企业保障软件交付安全与效率的关键举措。Harbor作为由VMware开源的企业级Registry Server,提供了基于角色的访问控制、镜像复制、漏洞扫描等核心功能,特别适合在CentOS 7这类稳定的企业级Linux环境中部署。本文将系统阐述从环境准备到日常运维的全流程,帮助读者在CentOS 7上构建安全可靠的私有镜像仓库。

一、环境准备与系统优化

1.1 系统基础要求验证

Harbor对运行环境有明确要求:CentOS 7.4+版本、至少4GB内存(生产环境建议8GB+)、双核CPU及以上配置。通过cat /etc/redhat-release确认系统版本,使用free -hlscpu检查资源配额。对于资源紧张的环境,建议通过swapoff -a禁用交换分区以提升性能。

1.2 网络环境配置要点

  • 防火墙策略:开放80(HTTP)、443(HTTPS)、22(SSH管理)端口
    1. firewall-cmd --permanent --add-service={http,https,ssh}
    2. firewall-cmd --reload
  • SELinux策略调整:临时设置为permissive模式进行测试
    1. setenforce 0
    2. # 生产环境建议通过`semanage`配置精细策略

1.3 依赖组件安装指南

  • Docker引擎安装(17.06+版本):
    1. yum install -y yum-utils device-mapper-persistent-data lvm2
    2. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    3. yum install -y docker-ce docker-ce-cli containerd.io
    4. systemctl enable --now docker
  • Docker Compose部署(1.24+版本):
    1. 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. chmod +x /usr/local/bin/docker-compose

二、Harbor核心组件部署

2.1 安装包获取与验证

从官方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. hostname: registry.example.com # 需配置DNS解析
  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
  12. storage_driver:
  13. name: filesystem
  14. fs:
  15. rootpath: /data/registry

2.3 证书配置最佳实践

生产环境必须配置TLS证书:

  1. mkdir -p /data/cert
  2. openssl req -newkey rsa:4096 -nodes -sha256 -keyout /data/cert/server.key \
  3. -x509 -days 3650 -out /data/cert/server.crt \
  4. -subj "/CN=registry.example.com/O=MyCompany/C=CN"
  5. chown -R 10000:10000 /data/cert

2.4 安装执行与进程管理

执行安装脚本并验证服务状态:

  1. ./install.sh --with-notary --with-clair # 可选组件
  2. docker-compose ps
  3. # 正常状态应显示所有服务为"Up"

三、Harbor高级功能配置

3.1 用户权限体系设计

通过Web界面或API创建项目与用户:

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

3.2 镜像复制策略配置

在System->Replication页面设置:

  • 源仓库:选择本地项目
  • 目标端点:配置远程Registry地址
  • 触发模式:定时同步(如每天凌晨2点)
  • 过滤规则:按标签或镜像名匹配

3.3 漏洞扫描集成

启用Clair扫描器:

  1. harbor.yml中设置clair: enabled: true
  2. 重启服务:docker-compose down && docker-compose up -d
  3. 扫描镜像:在项目详情页选择”Scan Now”

四、运维监控体系构建

4.1 日志集中管理方案

配置rsyslog收集Harbor容器日志:

  1. # 在/etc/rsyslog.d/harbor.conf添加
  2. $template RemoteLogs,"/var/log/harbor/%HOSTNAME%/%PROGRAMNAME%.log"
  3. *.* ?RemoteLogs
  4. # 重启服务
  5. systemctl restart rsyslog

4.2 性能监控指标采集

通过Prometheus采集Harbor指标:

  1. 修改docker-compose.yml暴露metrics端口
  2. 配置Prometheus的scrape_configs:
    1. scrape_configs:
    2. - job_name: 'harbor'
    3. static_configs:
    4. - targets: ['harbor.example.com:9090']

4.3 备份恢复策略

完整备份方案:

  1. # 备份配置文件
  2. tar czvf harbor-config-backup-$(date +%Y%m%d).tar.gz /data/harbor/config
  3. # 备份数据库
  4. docker exec -it harbor-db pg_dump -U postgres -F c registry > registry_backup.dump

五、常见问题解决方案

5.1 证书验证失败处理

当出现x509: certificate signed by unknown authority错误时:

  1. 将CA证书添加到Docker信任链:
    1. mkdir -p /etc/docker/certs.d/registry.example.com
    2. cp /data/cert/server.crt /etc/docker/certs.d/registry.example.com/ca.crt
  2. 重启Docker服务

5.2 存储空间不足优化

实施存储配额与垃圾回收:

  1. # 设置项目配额
  2. curl -u admin:Harbor12345 -X PUT -H "Content-Type: application/json" \
  3. -d '{"storage_quota": 50}' \
  4. http://localhost/api/v2.0/projects/devops
  5. # 执行垃圾回收
  6. docker run -it --name gc --rm \
  7. -v /var/run/docker.sock:/var/run/docker.sock \
  8. goharbor/harbor-gc:v2.4.3

5.3 高并发访问优化

调整Nginx配置参数:

  1. # 在harbor.cfg生成的nginx配置中添加
  2. worker_processes auto;
  3. worker_rlimit_nofile 65535;
  4. events {
  5. worker_connections 4096;
  6. }

六、生产环境部署建议

  1. 高可用架构:采用主从复制模式部署多个Harbor实例,配置负载均衡器
  2. 存储优化:使用对象存储(如MinIO)替代本地文件系统
  3. 安全加固
    • 定期轮换管理员密码
    • 启用审计日志
    • 实施网络隔离策略
  4. 升级策略
    • 先在测试环境验证升级
    • 备份数据库和配置
    • 使用./prepare脚本生成升级配置

通过以上系统化的部署方案,企业可以在CentOS 7环境中构建出满足生产级要求的Harbor镜像仓库。实际部署时,建议先在非生产环境完成完整测试,重点关注存储性能、网络延迟和权限控制等关键指标。随着容器技术的不断发展,Harbor的漏洞扫描、镜像签名等安全功能将成为企业构建DevSecOps体系的重要支撑。