简介:本文深入解析Harbor单机部署的定义、技术原理及实现步骤,涵盖环境准备、安装配置、数据存储优化等核心环节,为开发者提供可落地的部署指南。
单机部署Harbor指在一台物理服务器或虚拟机上完成Harbor仓库的全部组件安装与运行,包含核心服务(Registry、Core、JobService)、数据库(PostgreSQL/MySQL)及缓存服务(Redis)。这种部署模式通过集中式架构实现容器镜像的存储、签名、权限控制等功能,适用于开发测试环境、小型团队或资源受限场景。
与集群部署相比,单机部署的显著特征在于:
典型适用场景包括:
需规避的部署场景:
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 2核 | 4核(支持超线程) |
| 内存 | 4GB | 8GB |
| 存储 | 100GB(SSD) | 500GB(NVMe SSD) |
| 网络带宽 | 100Mbps | 1Gbps |
# 基础依赖安装示例(CentOS 7)sudo yum install -y docker-ce docker-ce-cli containerd.iosudo systemctl enable --now docker# 配置HTTP代理(可选)cat <<EOF > /etc/docker/daemon.json{"registry-mirrors": ["https://<mirror-url>"],"insecure-registries": ["<harbor-ip>:5000"]}EOFsudo systemctl restart docker
# 下载Harbor安装包(以v2.9.0为例)wget https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-offline-installer-v2.9.0.tgztar xzf harbor-offline-installer-v2.9.0.tgzcd harbor
修改harbor.yml.tmpl核心参数:
hostname: <your-domain-or-ip> # 必须配置可解析的域名或IPhttp:port: 80 # 或443启用HTTPS# tls配置示例# certificate: /data/cert/server.crt# private_key: /data/cert/server.keydatabase:password: <strong-password> # PostgreSQL密码max_idle_conns: 50max_open_conns: 100storage_driver:name: filesystem # 单机部署推荐# 扩展存储配置示例# filesystem:# rootdirectory: /var/lib/harbor# s3:# accesskey: <access-key># secretkey: <secret-key># region: <region># bucket: <bucket-name>
# 生成配置文件cp harbor.yml.tmpl harbor.yml# 执行安装(需root权限)sudo ./install.sh --with-clair # 可选集成漏洞扫描# 验证服务状态docker-compose ps# 预期输出:# Name Command State Ports# -----------------------------------------------------------------------------# harbor-core .../harbor_core Up (healthy)# harbor-db .../harbor_db Up (healthy)# harbor-jobservice .../harbor_jobservice Up (healthy)# harbor-portal .../harbor_portal Up (healthy)# nginx nginx -g daemon off; Up (healthy) 0.0.0.0:80->80/tcp# redis redis-server /etc/redis.conf Up (healthy)
# 创建专用数据卷sudo mkdir -p /var/lib/harbor/{registry,database,redis}sudo chown -R 10000:10000 /var/lib/harbor # 匹配容器用户ID# 在harbor.yml中配置storage_driver:name: filesystemfilesystem:rootdirectory: /var/lib/harbor/registry
# 配置MinIO作为后端存储storage_driver:name: s3s3:accesskey: minioadminsecretkey: minioadminregion: us-east-1regionendpoint: http://<minio-ip>:9000bucket: harbor-registryencrypt: truesecure: false
# PostgreSQL数据目录备份sudo cp -r /var/lib/postgresql/data /backup/postgresql_backup_$(date +%F)# 配置自动备份(crontab示例)0 3 * * * /usr/bin/pg_dump -U postgres -h 127.0.0.1 harbor > /backup/harbor_db_$(date +\%F).sql
# 使用skopeo进行镜像同步(跨主机备份)skopeo copy \docker://<harbor-ip>/library/nginx:latest \docker://<backup-harbor>/library/nginx:latest
# 检查占用端口的进程sudo netstat -tulnp | grep -E "80|443|5432|6379"# 修改Harbor端口配置vi harbor.ymlhttp:port: 8080 # 修改为非标准端口# 修改Nginx配置(如需)vi /etc/nginx/conf.d/harbor.confserver {listen 8080;...}
# 生成自签名证书示例openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /etc/harbor/ssl/harbor.key \-out /etc/harbor/ssl/harbor.crt \-subj "/CN=<your-domain>"# 配置harbor.ymlhttp:port: 443tls:certificate: /etc/harbor/ssl/harbor.crtprivate_key: /etc/harbor/ssl/harbor.key
# 监控关键指标docker stats --no-stream# 关注CPU%、MEM%、NET I/O# 数据库性能分析sudo -u postgres psql -U postgres -h 127.0.0.1 -d registrySELECT * FROM pg_stat_activity; # 检查长时间运行的查询
定期健康检查:
# 每日检查脚本示例#!/bin/bashif curl -sI http://<harbor-ip>/api/v2.0/health | grep -q "200 OK"; thenecho "Harbor服务正常"elseecho "Harbor服务异常" | mail -s "Harbor告警" admin@example.comfi
镜像清理策略:
# 在harbor.yml中配置垃圾回收gc:enabled: trueday: 7 # 保留7天内的未引用镜像
升级路径规划:
通过以上技术实现与优化实践,单机部署Harbor可在保证功能完整性的同时,实现资源的高效利用与运维的简化。实际部署时需根据业务负载动态调整配置参数,建议通过Prometheus+Grafana构建监控体系,实时掌握系统健康状态。