在 CentOS 7 上安装部署 Harbor 镜像仓库
一、引言
随着容器化技术的普及,Docker 镜像管理成为企业 DevOps 流程中的关键环节。Harbor 作为 VMware 开源的企业级私有镜像仓库,提供了权限控制、镜像复制、漏洞扫描等核心功能,尤其适合对安全性要求较高的生产环境。本文将详细阐述在 CentOS 7 系统上从零开始部署 Harbor 的完整流程,帮助开发者快速构建稳定的镜像管理平台。
二、环境准备与前置条件
2.1 系统要求
- 操作系统:CentOS 7.6+(推荐最小化安装)
- 硬件配置:
- CPU:2核以上(生产环境建议4核)
- 内存:4GB以上(生产环境建议8GB)
- 磁盘空间:根据镜像存储需求配置(建议SSD)
- 网络要求:
- 开放80(HTTP)、443(HTTPS)、22(SSH)端口
- 若需Notary服务需开放4443端口
2.2 依赖安装
# 安装基础开发工具yum install -y wget curl git vim net-tools# 安装Docker CE(需先配置yum仓库)sudo yum install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.io# 启动Docker并设置开机自启systemctl enable --now docker# 验证Docker安装docker run hello-world
2.3 防火墙配置
# 开放必要端口(根据实际协议选择)firewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=httpsfirewall-cmd --reload
三、Harbor核心组件安装
3.1 下载安装包
从官方GitHub Release页面获取最新版本(本文以v2.9.0为例):
wget https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-online-installer-v2.9.0.tgztar xvf harbor-online-installer-v2.9.0.tgzcd harbor
3.2 配置文件修改
编辑harbor.yml.tmpl文件(安装前需重命名为harbor.yml):
hostname: harbor.example.com # 修改为实际域名或IPhttp:port: 80https:port: 443certificate: /data/cert/server.crt # HTTPS证书路径private_key: /data/cert/server.keyharbor_admin_password: Harbor12345 # 初始管理员密码database:password: root123max_idle_conns: 50max_open_conns: 100
关键配置说明:
- hostname:必须为可解析的域名或IP,生产环境建议配置DNS
- 存储驱动:支持
filesystem(默认)、s3、azure等 - 数据持久化:
/data目录需单独挂载高可用存储
3.3 安装执行
# 生成配置文件cp harbor.yml.tmpl harbor.yml# 执行安装(需root权限)sudo ./install.sh
安装过程会自动完成以下操作:
- 下载所需Docker镜像(harbor-core、harbor-db等)
- 初始化数据库
- 启动所有容器组件
四、安装后验证与配置
4.1 服务状态检查
docker-compose ps # 查看容器状态curl -I http://localhost # 测试基础访问
正常应返回HTTP/1.1 200 OK,且所有容器显示Up状态。
4.2 客户端配置
在需要推送镜像的机器上配置/etc/docker/daemon.json:
{"insecure-registries": ["harbor.example.com"] # 若使用HTTP协议}
重启Docker服务后验证:
docker login harbor.example.com# 输入用户名admin和配置的密码
4.3 高级配置建议
- 日志轮转:配置
/etc/logrotate.d/harbor防止日志文件过大 - 备份策略:定期备份
/data目录和数据库 - 性能调优:
- 调整
harbor.yml中的_ELASTICSEARCH_MAX_RESULTS参数 - 优化PostgreSQL配置(
shared_buffers等)
- 调整
五、常见问题解决方案
5.1 端口冲突处理
若80/443端口被占用:
# 查找占用进程netstat -tulnp | grep :80# 修改Harbor配置使用其他端口vim harbor.ymlhttp:port: 8080
5.2 证书配置错误
生成自签名证书示例:
mkdir -p /data/certopenssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /data/cert/server.key -out /data/cert/server.crt \-subj "/CN=harbor.example.com"
5.3 存储空间不足
扩展存储的两种方式:
- LVM扩展:
vgextend centos /dev/sdblvextend -L +100G /dev/centos/rootresize2fs /dev/centos/root
- 添加存储卷:修改
docker-compose.yml中的volumes配置
六、生产环境最佳实践
- 高可用架构:
- 使用Keepalived+HAProxy实现负载均衡
- 数据库配置主从复制
- 安全加固:
- 启用Harbor的Clair漏洞扫描
- 配置LDAP集成实现集中认证
- 监控方案:
- 部署Prometheus+Grafana监控指标
- 配置Alertmanager告警规则
七、总结
通过本文的详细步骤,开发者可以在CentOS 7系统上快速完成Harbor镜像仓库的部署。关键成功要素包括:精确的环境准备、合理的资源配置、严谨的配置文件校验以及完善的灾备方案。建议定期检查Harbor官方文档获取最新安全补丁,并考虑结合Kubernetes Operator实现更灵活的运维管理。
附:Harbor官方文档链接:https://goharbor.io/docs/
完整安装包下载:Harbor Releases