Harbor(v2.0+)支持项目级存储配额管理,通过启用Quota Management、为各项目配置上限(如5GB)、依赖垃圾回收释放空间(非实时),并可与K8s命名空间资源限制协同管控。

在 Docker 生态中,Docker 官方 Registry 本身不支持项目级 Quota 配额管理;真正具备成熟多租户存储配额能力的是 Harbor(v2.0+)。它通过“项目(Project)”为单位设置存储上限,实现资源隔离与公平分配。配置核心分三步:确认功能可用、启用并设置项目配额、理解配额行为边界。
确认 Harbor 版本与配额开关已开启
Harbor v1.x 不支持配额,必须使用 v2.0 或更高版本。升级后需检查两项:
- Web UI 中进入 Administration → Configuration,确保 Quota Management 处于启用状态(默认开启)
- 命令行验证系统信息:
curl -u admin:密码 https://your-harbor/api/v2.0/systeminfo,返回中应含"quota_per_project_enabled": true
为每个租户项目单独配置存储上限
配额按项目绑定,不是全局或用户级。操作路径如下:
- 进入 Web UI → Projects → 点击目标租户项目(如
tenant-a)→ 右上角切换到 Configuration 标签页 - 勾选 Enable Quota,输入数值和单位(例如
5GB、20480MB) - 保存后立即生效;若当前已超限,后续
docker push将被拒绝,并返回 HTTP 413 错误
配额统计逻辑与释放机制要特别注意
配额不是简单按镜像数量或标签计数,而是精确统计项目下所有镜像层(layers)的原始字节总和,包括:
- 所有标签指向的层,以及未被任何标签引用但尚未被清理的悬空层(dangling layers)
- 删除镜像或标签后,配额不会实时释放——必须等待 Harbor 的垃圾回收(GC)任务运行(默认每小时一次)
- 管理员可手动触发 GC:进入 Administration → Garbage Collection → Schedule Now
结合 Kubernetes 多租户做协同管控(可选增强)
若 Kaniko 在 K8s 中构建并推送到 Harbor,建议叠加命名空间级资源限制:
- 为每个租户创建独立 Namespace,并配置
ResourceQuota限制 CPU / 内存 / Pod 数量 - Kaniko Pod 的
resources.limits应与 Harbor 项目配额匹配(例如大镜像项目配更高内存 + 更高 GB 配额) - 镜像命名规范统一为
harbor.example.com/tenant-a/app:v1.2,便于审计与策略识别











