harbor镜像仓库空间的清理方法
harbor
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
项目地址:https://gitcode.com/gh_mirrors/ha/harbor
免费下载资源
·
前言
随着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 天前
更多推荐
已为社区贡献1条内容
所有评论(0)