harbor磁盘爆满,执行垃圾回收清理镜像

1.在使用Jenkins发版操作时发现,推送私有仓库harbor报错:

received unexpected HTTP status: 500 Internal Server Error

2.想要登陆harbor查看,发现harbor界面登陆报错:登陆校验失败

3.登陆服务器,查看harbor的日志,在redis.log中找到报错信息

提示磁盘爆满

4.登陆ranchar,发现rancher也挂掉了,执行:docker ps -a |grep ranchar ,拿到ranchar的容器id,执行:docker logs --tail=200 ranchar 查看ranchar的日志

当时忘了截图了。。

总之也提示磁盘已满

5.查看磁盘使用情况,执行:df -h

发现/home目录已满

6.进入home目录下,执行:du -hs *| sort -h,发现harbor占比最大,然后一路找下去,发现是harbor的/registry/docker/registry 占比最大

至此,已能判断出是harbor的镜像占用内存过大,导致磁盘爆满

7.停止harbor,防止在删除镜像过程中有人在上传镜像,导致镜像的图层不全

docker-compose stop

8.预览运行效果

docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect --dry-run /etc/registry/config.yml

9.删除相关文件和镜像

docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect  /etc/registry/config.yml

10.启动harbor

docker-compose start

至此,harbor已经可以登录,上传镜像发版也没有问题了

 

原文地址:https://www.cnblogs.com/yechen2019/p/11577564.html

时间: 2024-07-31 08:56:33

harbor磁盘爆满,执行垃圾回收清理镜像的相关文章

Harbor私有仓库中如何彻底删除镜像释放存储空间?

简介: Harbor私有仓库运行一段时间后,仓库中存有大量镜像,会占用太多的存储空间.直接通过Harbor界面删除相关镜像,并不会自动删除存储中的文件和镜像.需要停止Harbor服务,执行垃圾回收命令,进行存储空间清理和回收. 相关资料: 1.Harbor用户手册中的相关说明: Next, delete the actual files of the repository using the registry's garbage collection(GC). Make sure that no

12-JAVA清理_终结处理和垃圾回收

导论: 将一个对象初始化后就"弃之不顾"的做法并非总是安全的.虽然java用垃圾回收器回收无用对象占用的内存资源.但也有特殊情况, 假定对象并非使用new获得了一块"特殊"的区域,由于垃圾回收器只知道释放那些经由new分配的内存,所以他不知道该怎样释 放这块"特殊"的内存. 1.finalize() 此方法出现的原因:回收除以new方法创建对象方式以外的方式分配的内存 为了应对上面的那种情况,java允许在类中定义一个名为finalize()的方

JVM(四)垃圾回收的实现算法和执行细节

全文共 1890 个字,读完大约需要 6 分钟. 上一篇我们讲了垃圾标记的一些实现细节和经典算法,而本文将系统的讲解一下垃圾回收的经典算法,和Hotspot虚拟机执行垃圾回收的一些实现细节,比如安全点和安全区域等. 因为各个平台的虚拟机操作内存的方法各不相同,且牵扯大量的程序实现细节,所以本文不会过多的讨论算法的具体实现,只会介绍几种算法思想及发展过程. 垃圾回收算法 1.标记-清除算法 标记-清除算法是最基础的算法,像它的名字一样算法分为"标记"和"清除"两个阶段

成为Java GC专家(3)—如何优化Java垃圾回收机制

本文作者: ImportNew - 王晓杰 未经许可,禁止转载! 本文是成为Java GC专家系列文章的第三篇.在第一篇<成为JavaGC专家Part I — 深入浅出Java垃圾回收机制>中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响. 在第二篇<成为JavaGC专家Part II — 如何监控Java垃圾回收机制>,我解释了JVM实际上是如何执行垃圾回收的,我们如何监控GC,以及

Clr Via C#读书笔记---垃圾回收机制

#1 垃圾回收平台的基本工作原理: 访问一个资源所需的具体步骤: 1)调用IL指令newobj,为代表资源的类型分配内存.在C#中使用new操作符,编译器就会自动生成该指令.2)初始化内存,设置资源的初始状态,使资源可用.类型的实例构造器负责设置该初始状态.3)访问类型的成员(可根据需要反复)来使用资源.4)摧毁资源的状态以进行清理.正确清理资源的代码要放在Finalize, Dispose和Close方法.5)释放内存.垃圾回收器独自负责这一步. 托管堆如何知道应用程序不再用一个对象? 托管堆

Docker registry垃圾回收

Docker registry垃圾回收 通过: docker run -p 5000:5000 -v /netdata/xxxx/registry:/var/lib/registry registry.cn-hangzhou.aliyuncs.com/term/registry-gc:2.7 registry garbage-collect /var/lib/registry/config.yml 搭建好registry服务后,docker push alpine:3.8镜像至registry服

重温CLR(十五) 托管堆和垃圾回收

本章要讨论托管应用程序如何构造新对象,托管堆如何控制这些对象的生存期,以及如何回收这些对象的内存.简单地说,本章要解释clr中的垃圾回收期是如何工作的,还要解释相关的性能问题.另外,本章讨论了如何设计应用程序来最有效地使用内存. 托管堆基础 每个程序都要使用这样或那样的资源,包括文件.内存缓冲区.屏幕空间.网络连接.数据库资源等.事实上,在面向对象的环境中,每个类型都代表可提供程序使用的一种资源.要使用这些资源,必须为代表资源的类型分配内存.以下是访问一个资源所需的步骤 1 调用IL指令newo

CMS垃圾回收机制

详解CMS垃圾回收机制 原创不易,未经允许,不得转载~~~ 什么是CMS? Concurrent Mark Sweep. 看名字就知道,CMS是一款并发.使用标记-清除算法的gc. CMS是针对老年代进行回收的GC. CMS有什么用? CMS以获取最小停顿时间为目的. 在一些对响应时间有很高要求的应用或网站中,用户程序不能有长时间的停顿,CMS 可以用于此场景. CMS如何执行?  总体来说CMS的执行过程可以分为以下几个阶段: 3.1 初始标记(STW) 3.2 并发标记 3.3 并发预清理

.Net 垃圾回收和大对象处理

CLR垃圾回收器根据所占空间大小划分对象.大对象和小对象的处理方式有很大区别.比如内存碎片整理 —— 在内存中移动大对象的成本是昂贵的,让我们研究一下垃圾回收器是如何处理大对象的,大对象对程序性能有哪些潜在的影响. 大对象堆和垃圾回收 在.Net 1.0和2.0中,如果一个对象的大小超过85000byte,就认为这是一个大对象.这个数字是根据性能优化的经验得到的.当一个对象申请内存大小达到这个阀值,它就会被分配到大对象堆上.这意味着什么呢?要理解这个,我们需要理解.Net垃圾回收机制. 如大多人