harbor 从 v2.0 起支持项目级配额,需在 web ui 启用 quota management 并为项目手动配置存储上限(如 10gb),配额统计所有镜像层总大小,超限后仅拒绝 push,释放需等待或手动触发 gc。

在 Harbor 等支持配额管理的 Docker 镜像仓库中,Quotas(配额)用于限制项目(Project)级别的存储使用上限,防止某个项目无限制占用磁盘空间。它不作用于单个镜像或用户,而是面向项目整体生效。
确认 Harbor 版本与配额功能可用性
Harbor 从 v2.0 开始正式支持项目级配额(Quota),需确保你使用的是 v2.0 或更高版本。旧版(如 v1.x)不支持该功能,升级前请备份数据并查阅官方升级文档。
- 登录 Harbor Web UI → 左侧导航栏点击 Administration → Configuration,确认 Quota Management 已启用(默认开启)
- 命令行可执行
curl -u admin:yourpassword https://your-harbor/api/v2.0/systeminfo,检查返回中"quota_per_project_enabled": true
为项目设置存储配额
配额必须在项目创建后手动配置,新建项目时无法直接设定;已有项目也可随时修改。
- 进入 Web UI → Projects → 点击目标项目名称 → 右上角点击 Configuration 标签页
- 勾选 Enable Quota,输入期望的存储上限(单位:B / KB / MB / GB,例如
10GB) - 保存后,配额立即生效;若当前项目已超限,新推送(
docker push)将被拒绝,并返回413 Request Entity Too Large或类似错误
配额行为与常见注意事项
配额统计的是项目下所有镜像层(layers)的总大小,包含历史标签、未被引用的悬空层(dangling layers)——即使删除了标签,只要层仍被其他标签引用或未被垃圾回收,就会计入配额。
- 触发配额限制时,仅阻止新内容写入(push),不影响 pull、delete 或标签重命名等操作
- 删除镜像或标签后,配额释放不是实时的;需等待 Harbor 的 GC(Garbage Collection)任务运行(默认每小时一次),或手动触发 GC(Administration → Garbage Collection → Schedule Now)
- 配额不区分用户角色,所有成员共享同一上限;管理员也无法绕过配额推送
通过 API 管理配额(可选)
适合批量配置或集成 CI/CD 流程。使用 Harbor REST API v2.0 操作项目配额:
- 查看项目配额:
GET /api/v2.0/projects/{project_id}/quotas - 设置配额:
PUT /api/v2.0/projects/{project_id}/quotas,请求体示例:{"hard": {"storage": 10737418240}}(即 10GB) - 需携带有效的管理员 Token(通过
/api/v2.0/users/current/permissions或登录态 Cookie 认证)










