harbor镜像仓库空间的清理方法

前言

随着harbor的使用,导致harbor的磁盘空间不足.需要进行清理,以下是镜像仓库清理方法
harbor镜像仓库空间的清理方法_第1张图片

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

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

harbor镜像仓库空间的清理方法_第2张图片
harbor镜像仓库空间的清理方法_第3张图片

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

harbor镜像仓库空间的清理方法_第4张图片
harbor镜像仓库空间的清理方法_第5张图片

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

二、清理服务

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

harbor镜像仓库空间的清理方法_第6张图片
harbor镜像仓库空间的清理方法_第7张图片
harbor镜像仓库空间的清理方法_第8张图片

点击“立即清理垃圾”,看到下面的任务记录。执行立即清理垃圾后,观察镜像库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,如下图所示

harbor镜像仓库空间的清理方法_第9张图片
harbor镜像仓库空间的清理方法_第10张图片
harbor镜像仓库空间的清理方法_第11张图片
经过对比,可以发现释放了将近10G的磁盘空间容量


你可能感兴趣的:(运维,服务器,容器)