前言

随着harbor的使用,导致harbor的磁盘空间不足.需要进行清理,以下是镜像仓库清理方法
在这里插入图片描述

一、harbor界面中设置仓库策略的清理方法

登录harbor镜像仓库,点击仓库名–>策略

在这里插入图片描述
在这里插入图片描述

策略支持多个规则,我这里选择的是第一个默认规则,保留最近推送的5个。然后执行的频率是每周,这个频率看每个人的使用场景。

在这里插入图片描述
在这里插入图片描述

在使用模拟运行确认无误后,一定会要点击“立即运行”。但是运行完成后,持续时间是4秒,可harbor的存储空间并无变化。(仍旧是49GB)
这种方法若是行不通则继续看下面的方法!!!

二、清理服务

登录harbor镜像仓库,点击清理服务–>垃圾清理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击“立即清理垃圾”,看到下面的任务记录。执行立即清理垃圾后,观察镜像库library/icity 的数量,可以看出,最早的标签已被清理。

三.通过harbor gc执行清理操作

该方法也是面试时面试官问到的一个方法,是否操作过harbor的gc清理,因为实际生产环境中的项目并没有使用该方法操作过,因此在面试后进行了学习并记录,希望可以帮到大家

1、执行如下的前提是必须保证harbor是处于stop状态,而不能是down状态
	docker-compose stop
2、执行
	docker run -it --name gc --rm  --volumes-from registry vmware/registry-photon:v2.6.2-v1.5.0 garbage-collect --dry-run /etc/registry/config.yml (--dry-run是打印进度而不删除任何数据)
	谨记: 如果是down状态,则会报错docker: Error responsefrom daemon: No such container: registry.
3、执行
	docker run -it --name gc --rm  --volumes-from registry vmware/registry-photon:v2.6.2-v1.5.0 garbage-collect  /etc/registry/config.yml
	当执行这步操作后,如果发现磁盘空间并未减少多少,则只能证明垃圾回收针对删除的image是起作用的,而harbor的blobs依然会占用很大空间并未释放。

为什么harbor空间中的blobs会占用这么大空间呢?

	Harbor删除镜像后且GC清理后,磁盘空间没有释放。因为我们push大量相同标签的镜像,Docker 镜像由标签引用,
并由唯一的摘要标识。这意味着如果myImage使用标记推送两个图像,在DR内部他们显示的不同,它们将由两个不同的digests标识。
最后推送的Images是当前的。Docker 镜像由layers组成,每个layers都关联一个blob。该blob是最占用存储的文件; 这些文件将由GC清理。正由上面的描述每个镜像都会存储一个引用,假如,我们重复提交10次,那一个标签在DR中会有10个引用,标签只能获取tag。而其他9个只能用digest获取了。
	因此,简单的来说就是因为相同的标签的镜像重复提交次数过多导致blobs占用空间越来越大。

怎么清理harbor中blobs占用的空间呢?

1、通过向docker-compose.yml中添加:
	ports:
	  -127.0.0.1:5000:5000
2、执行以下命令,自行提前拉取该镜像mortensrasmussen/docker-registry-manifest-cleanup
	docker pull mortensrasmussen/docker-registry-manifest-cleanup 如下图所示
	docker run --network="host" -it -v /data/registry:/registry -e REGISTRY_URL=http://127.0.0.1:5000 mortensrasmussen/docker-registry-manifest-cleanup
	3、执行后会清理掉已删除且未使用的那些blobs,如下图所示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
经过对比,可以发现释放了将近10G的磁盘空间容量


GitHub 加速计划 / ha / harbor
23.24 K
4.67 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:1 个月前 )
c5d26723 chore(deps): bump github.com/go-openapi/runtime in /src Bumps [github.com/go-openapi/runtime](https://github.com/go-openapi/runtime) from 0.26.2 to 0.28.0. - [Release notes](https://github.com/go-openapi/runtime/releases) - [Commits](https://github.com/go-openapi/runtime/compare/v0.26.2...v0.28.0) --- updated-dependencies: - dependency-name: github.com/go-openapi/runtime dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: miner <yminer@vmware.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Shengwen YU <yshengwen@vmware.com> Co-authored-by: miner <yminer@vmware.com> 14 天前
76624373 chore(deps): bump github.com/coreos/go-oidc/v3 in /src Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc) from 3.10.0 to 3.11.0. - [Release notes](https://github.com/coreos/go-oidc/releases) - [Commits](https://github.com/coreos/go-oidc/compare/v3.10.0...v3.11.0) --- updated-dependencies: - dependency-name: github.com/coreos/go-oidc/v3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Shengwen YU <yshengwen@vmware.com> Co-authored-by: miner <yminer@vmware.com> 14 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐