news 2026/4/18 17:06:49

基于 Docker Compose 的 Harbor 私有仓库部署实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 Docker Compose 的 Harbor 私有仓库部署实战

1. 为什么你需要Harbor私有仓库

最近在帮客户部署Kubernetes集群时,我发现团队每次从Docker Hub拉取镜像都要等半天,特别是遇到网络波动时,一个基础镜像能卡十几分钟。更糟的是,有次生产环境部署时发现某个公共镜像居然被原作者删除了,导致整个发布流程中断。这时候我才真正意识到:企业级开发必须要有自己的私有镜像仓库。

Harbor就是为解决这些问题而生的。作为CNCF毕业项目,它不仅是简单的镜像存储,更像是个"镜像管家":能帮你扫描安全漏洞、管理用户权限、自动同步外部镜像。我经手过的金融类项目尤其看重这点——既不能把代码打包的镜像放在公网,又要确保所有依赖镜像都经过安全审核。

用Docker Compose部署Harbor是我最推荐的方式,相比Kubernetes部署方案,它更适合中小团队快速搭建。上周刚用这个方法给一个20人开发团队部署了私有仓库,从零开始到能正常推送镜像只用了40分钟。下面我就把实战中验证过的完整流程拆解给你看。

2. 环境准备:少走弯路的正确姿势

2.1 硬件配置不是越大越好

很多新手容易陷入一个误区——觉得私有仓库肯定很吃资源,上来就准备32核128G的服务器。其实根据我的压力测试,单节点Harbor在4核8G的机器上就能支撑日均5000次以上的镜像拉取请求。去年给某电商团队配置的8核16G服务器,到现在峰值并发200+都没出现过性能瓶颈。

关键是要确保磁盘性能:建议用SSD阵列,至少500GB起步。我有次用云平台的普通云盘,结果镜像推送时IO直接打满,导致整个仓库不可用。现在我的标准配置是:

  • 计算型实例:4核8G(阿里云ecs.c6.xlarge或同等规格)
  • 存储:500GB SSD(云盘IOPS建议≥3000)
  • 带宽:建议≥5Mbps(内网传输可忽略)

2.2 软件依赖的隐藏坑

官方文档说Docker 18.09+就行,但我强烈建议用Docker 20.10.17以上版本。去年遇到过一个诡异的问题:Harbor的GC(垃圾回收)总在半夜卡死,查了三天才发现是Docker 19.03的某个内存泄漏bug。升级后立即解决。

安装前务必执行这几条命令:

# 关闭Swap(Kubernetes环境必须) sudo swapoff -a sed -i '/swap/s/^/#/' /etc/fstab # 调整内核参数 cat <<EOF | sudo tee /etc/sysctl.d/harbor.conf net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-iptables=1 fs.file-max=1000000 EOF sudo sysctl --system

3. 配置文件里的大学问

3.1 解剖docker-compose.yml

很多人直接复制官方模板就用,结果后面各种踩坑。我来解释几个关键参数:

services: harbor: environment: - HARBOR_ADMIN_PASSWORD=Harbor12345 # 一定要改!曾见过用默认密码被黑的案例 - DATABASE_URL=postgresql://harbor:Harbor12345@postgres:5432/harbor - REDIS_URL=redis://redis:6379/0 - _STOAGE_TYPE=filesystem # 小文件多用filesystem,大镜像建议s3

数据库连接字符串里藏着三个地雷:

  1. 密码复杂度不够(至少12位混合字符)
  2. 没配置连接池(高并发时会爆)
  3. 没有定期备份配置(吃过亏的举手)

建议改成这样:

environment: - DATABASE_URL=postgresql://harbor:Jx@12sdf34!@postgres:5432/harbor?pool_size=20&timeout=15

3.2 数据持久化的正确姿势

见过最惨的案例是有人把数据卷挂载到/tmp目录,服务器重启后所有镜像消失。正确的持久化配置应该是:

volumes: - /data/harbor/registry:/var/lib/registry # 镜像存储 - /data/harbor/secret:/etc/harbor/secret # 证书密钥 - /data/harbor/database:/var/lib/postgresql/data # 数据库 - /data/harbor/redis:/data # Redis数据

重要提示:/data/harbor目录权限必须设为10000:10000(Harbor服务的UID):

sudo chown -R 10000:10000 /data/harbor

4. SSL证书配置实战

4.1 自签名证书的隐患

虽然用OpenSSL快速生成证书很方便:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout harbor.key -out harbor.crt \ -subj "/CN=your.domain.com" -addext "subjectAltName=DNS:your.domain.com"

但在企业环境会遇到两个问题:

  1. 每台客户端都要手动信任证书(DevOps会骂人)
  2. 安全审计通不过(特别是金融行业)

更专业的做法是用Certbot申请Let's Encrypt证书:

sudo apt install certbot sudo certbot certonly --standalone -d harbor.yourdomain.com

4.2 证书自动续期秘籍

Let's Encrypt证书90天过期,手动更新太麻烦。用这个crontab方案:

0 3 * * * /usr/bin/certbot renew --quiet && docker compose kill -s SIGHUP harbor

原理是通过SIGHUP信号让Harbor重新加载证书,无需重启服务。我在三个生产环境用这套方案两年多,从没出过证书过期问题。

5. 安装后的必做检查清单

5.1 健康检查三连击

不要只看页面能打开就完事,执行这些深度检查:

# 检查服务状态 docker compose ps | grep -v "Up" # 测试API接口 curl -k https://localhost/api/v2.0/health | jq . # 模拟推送镜像 docker pull busybox docker tag busybox localhost/library/busybox docker push localhost/library/busybox

5.2 安全加固五件套

  1. 修改默认管理项目配额(我见过有人传了1TB的镜像把磁盘塞满)
  2. 开启内容信任(防止被篡改镜像)
  3. 配置IP白名单(特别是暴露在公网时)
  4. 设置自动扫描漏洞(CVE漏洞天天有)
  5. 启用操作审计(出问题时能溯源)

具体操作在Harbor管理界面的"系统管理"→"配置"里都能找到。上周刚用审计日志逮到一个误删生产镜像的实习生...

6. 性能调优实战记录

给某游戏公司做优化时,发现他们的Harbor在高峰期响应慢。通过调整这些参数,吞吐量提升了3倍:

# 在docker-compose.yml的harbor服务下添加 environment: - REGISTRY_HTTP_MAX_CONNECTIONS=1000 - WORKERS=10 - CHART_REPOSITORY_WORKERS=5 - HTTP_PROXY=http://proxy.example.com:3128 # 如果有内网代理

同时调整Nginx配置(在/data/harbor/nginx/nginx.conf):

worker_processes auto; worker_connections 10240; keepalive_timeout 300;

记得用tcpcopy做压测验证效果,我通常模拟100并发持续10分钟来检验稳定性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 15:29:37

【紧急预警】传统代码生成工具将在Q3大规模失效——因语义搜索基座升级引发的兼容断层已开始蔓延

第一章&#xff1a;智能代码生成与代码搜索结合的范式重构 2026奇点智能技术大会(https://ml-summit.org) 传统开发流程中&#xff0c;代码生成与代码搜索长期处于割裂状态&#xff1a;前者依赖提示工程驱动单次输出&#xff0c;后者则聚焦于静态语义匹配。当前前沿系统正推动…

作者头像 李华
网站建设 2026/4/17 15:29:16

Winhance中文版:Windows系统优化终极指南,5分钟告别卡顿烦恼

Winhance中文版&#xff1a;Windows系统优化终极指南&#xff0c;5分钟告别卡顿烦恼 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华
网站建设 2026/4/17 15:24:20

NTT实战:如何用Python实现数论变换加速多项式乘法(附完整代码)

NTT实战&#xff1a;如何用Python实现数论变换加速多项式乘法&#xff08;附完整代码&#xff09; 在密码学、信号处理和计算机代数系统中&#xff0c;多项式乘法是最基础却计算量巨大的操作之一。传统算法的时间复杂度为O(n)&#xff0c;当处理高次多项式时性能瓶颈尤为明显。…

作者头像 李华