zoukankan      html  css  js  c++  java
  • harbor镜像仓库清理操作

    两年前清理过一次harbor镜像,而现在又要面临清镜像的操作了,笔者目前所在的公司镜像是存放在ceph集群内部的,目前约200T,且该存储池是两副本,那么占用空间是400T左右。真的是相当浪费空间了。
    harbor镜像仓库由于过大,需要清理老版本镜像,以释放空间。清理之前有一些需要注意事项,提前说一下
    1、太老版本的harbor可能不带有清理机制(也就是下文讲的清理操作)
    2、清理期间harbor仓库处于只读状态,期间不能推镜像,但可以拉镜像。清理的过程也称为gc
    3、生产环境当中的harbor只读是不被允许的,因此开发出在线不停服gc的功能会更加受用(目前网上没有找到该案例,需要自己研发)

    实践过程如下:

    1、现在仓库有如下镜像

    2、harbor镜像仓库存放的位置

    一般上来说,harbor本身就是由docker跑起来的。harbor的数据存储是在容器goharbor/harbor-registryctl当中。进入到这个容器内部,找到/storage/docker/registry/v2目录,可以看到blobs和repositories两个目录。如下所示:

    root [ /storage/docker/registry/v2 ]# du -sm *
    1140    blobs
    1       repositories
    

    实际上,容器内部的/storage/docker/registry/v2目录对应的是宿主机上的/data/registry/docker/registry/v2目录。
    当我们推上去一个镜像的时候,blobs目录的大小会随之发生变化,至于增大多少空间,取决于你在harbor里面看到的镜像大小,如图所示:

    大约是702MB。所以上面看到的blobs目录的大小就是在推上去一个gitlab镜像后,由原来的438MB增长到现在的1140MB

    3、开始清理

    清理操作我们可以在harbor的webUI界面上来点点进行删除,镜像超级多的时候就是有点费手。

    选中并删除,删除成功后会在右侧进行提示。但是这种删除只是逻辑上的删除,并不会真正释放空间,可以去/storage/docker/registry/v2验证一下看看,空间还是没有释放。所以还需要下面的一步

    4、垃圾清理(在线gc)

    点击进行垃圾清理操作,期间会在下面生成一个清理任务。注意清理期间harbor仓库处于只读状态,此时不可推镜像。

    显示已完成表示清理成功了

    5、验证空间是否释放

    此时再去查看空间

    root [ /storage/docker/registry/v2 ]# du -sm *
    438     blobs
    1       repositories
    

    发现空间释放了。

  • 相关阅读:
    【STM32F429】第6章 ThreadX操作系统移植(IAR)
    【STM32F429】第5章 ThreadX操作系统移植(MDK AC6)
    【硬核】超强八位半开源万用表
    【STM32H7】第4章 ThreadX操作系统移植(MDK AC5)
    【STM32F429】第4章 ThreadX操作系统移植(MDK AC5)
    【STM32H7】第3章 ThreadX操作系统介绍
    【STM32F429】第3章 ThreadX操作系统介绍
    ST发布M33内核新品STM32U5,首款40nm工艺超低功耗系列,160MHz全速运行19uA/MHz
    CAN总线35周年特别篇 -- CAN总线的前世今生
    【STM32H7】第2章 初学ThreadX准备工作
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/15517706.html
Copyright © 2011-2022 走看看