在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. 网络配置
# 检查防火墙状态systemctl status firewalld# 开放必要端口(示例)firewall-cmd --permanent --add-port={80,443,4443}/tcpfirewall-cmd --reload
建议配置静态IP地址,避免DHCP变更导致的服务中断。对于生产环境,应规划独立的VLAN或子网。
3. 依赖安装
# 安装基础工具yum install -y wget curl unzip git# 安装Docker CE(19.03+)yum install -y yum-utilsyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install -y docker-ce docker-ce-cli containerd.iosystemctl enable --now docker# 安装Docker Compose(1.25+)curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose
三、Harbor安装部署流程
1. 下载安装包
# 获取最新版本(示例)VERSION=2.5.0wget https://github.com/goharbor/harbor/releases/download/v${VERSION}/harbor-online-installer-v${VERSION}.tgztar xvf harbor-online-installer-v*.tgzcd harbor
建议使用在线安装包(包含所有依赖),离线包适用于无外网环境。
2. 配置文件修改
编辑harbor.yml配置文件:
hostname: registry.example.com # 必须为可解析的域名http:port: 80https:certificate: /data/cert/server.crtprivate_key: /data/cert/server.keyharbor_admin_password: Harbor12345 # 初始管理员密码database:password: root123max_idle_conns: 50max_open_conns: 100
关键配置项说明:
hostname:必须配置为实际域名,否则会导致部分功能异常storage_driver:支持filesystem(默认)、s3、azure等clair:是否启用漏洞扫描(需额外配置)notary:镜像签名功能配置
3. 安装执行
# 执行安装前检查./prepare# 启动安装./install.sh
安装过程会执行以下操作:
- 创建必要的Docker网络
- 启动PostgreSQL、Redis等依赖服务
- 初始化Harbor数据库
- 启动核心服务组件
4. 启动与验证
# 使用docker-compose管理cd harbordocker-compose ps # 查看服务状态docker-compose logs -f # 查看实时日志# 验证服务curl -I http://registry.example.com
正常响应应包含200 OK状态码和Server: nginx头信息。
四、高级配置与管理
1. HTTPS配置
生成自签名证书(生产环境建议使用CA证书):
mkdir -p /data/certopenssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /data/cert/server.key -out /data/cert/server.crt \-subj "/CN=registry.example.com"
修改harbor.yml后需重新执行./prepare和docker-compose down/up。
2. 用户与权限管理
通过Web界面(默认https://<hostname>)或API进行管理:
# 使用Harbor CLI(需单独安装)harbor-cli user add --name testuser --email test@example.com --password Test123harbor-cli project create --name myproject --public
3. 镜像复制策略
配置跨数据中心镜像同步:
- 在”Administration”->”Replications”创建规则
- 配置源项目和目标仓库(支持其他Harbor实例或Docker Hub)
- 设置触发方式(手动/定时/事件驱动)
4. 维护与升级
升级流程示例:
# 备份数据docker-compose downtar czvf harbor-backup-$(date +%Y%m%d).tar.gz /data/database /data/registry# 下载新版本并更新配置wget https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-online-installer-v2.6.0.tgz# 修改harbor.yml后执行./preparedocker-compose up -d
五、常见问题解决方案
1. 502 Bad Gateway错误
- 检查Nginx容器日志:
docker logs -f nginx - 常见原因:后端服务未启动、证书配置错误、内存不足
2. 镜像推送失败
# 检查认证信息docker login registry.example.com# 验证网络连通性ping registry.example.comtelnet registry.example.com 443
3. 磁盘空间不足
配置自动清理策略:
# 在harbor.yml中添加trash:interval: 1440 # 每24小时清理retain: 360 # 保留最近360小时的删除记录
六、最佳实践建议
- 高可用部署:使用共享存储(NFS/GlusterFS)承载
/data目录,配合Keepalived实现VIP切换 - 安全加固:
- 定期轮换管理员密码
- 启用项目级别的访问控制
- 配置日志审计策略
- 性能优化:
- 为Registry服务配置专用磁盘
- 调整PostgreSQL的
shared_buffers参数 - 启用Nginx的gzip压缩
七、总结与展望
Harbor 2.x版本在稳定性、安全性和扩展性方面均有显著提升,特别是对Kubernetes的集成支持(如Helm Chart存储)。未来版本将进一步强化AI驱动的漏洞分析和多云管理能力。
通过本文的详细指导,读者可以完成从环境准备到生产部署的全流程操作。建议在实际部署前进行充分的测试验证,并根据业务需求定制配置参数。Harbor的模块化设计使其能够适应从开发测试到生产环境的各种场景需求。