惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threatpost
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
P
Proofpoint News Feed
D
DataBreaches.Net
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
宝玉的分享
宝玉的分享
Recorded Future
Recorded Future
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
C
Cisco Blogs
L
LangChain Blog
博客园 - 聂微东
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
量子位
AWS News Blog
AWS News Blog
爱范儿
爱范儿
Know Your Adversary
Know Your Adversary
F
Full Disclosure
MyScale Blog
MyScale Blog
Stack Overflow Blog
Stack Overflow Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Microsoft Azure Blog
Microsoft Azure Blog
S
Schneier on Security
Spread Privacy
Spread Privacy
P
Privacy International News Feed
人人都是产品经理
人人都是产品经理
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
Latest news
Latest news
D
Docker
Scott Helme
Scott Helme
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
MongoDB | Blog
MongoDB | Blog
The Register - Security
The Register - Security
T
Tailwind CSS Blog
SecWiki News
SecWiki News
C
CERT Recently Published Vulnerability Notes
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Security Affairs
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
Martin Fowler
Martin Fowler
I
InfoQ
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Tenable Blog

博客园 - GDOUJKZZ

.net 8程序如何在信创的arm64架构下运行【nuget包如何判断能不能在arm架构跑呢】 【AI应用】【声纹识别】一、mini io 来构建高可用的文件存储方案 【AI】第五篇 大话说神经网络第一篇 【AI】第四篇 什么是神经网络 【AI】第三篇 RAG是什么 【AI】前置篇 Ai Agent的全貌概览 【AI】第二篇 为什么会有神经网络 【AI】第一篇 语言模型的前世 n-gram的简单介绍 【一】AI赋能 javascript里面的var let const关键字区别和使用 学习心态 从应用开发转到大数据开发 一分钟RequireJS介绍 .NET 6 在小并发下如何生成唯一单据号 垃圾回收机制简单理解 NPOI导出大量数据的避免OOM解决方案【SXSSFWorkbook】 递归有环问题解决方案 C# 使用NPOI处理Excel模板-【前面部分固定,中间是动态的几行,尾部是固定的部分】 高并发的场景下,如何保证生产者投递到消息中间件的消息不丢失
docker 目录下的overlay2层的太多,导致占用大量占用磁盘空间怎么办呢。【docker目录清理】
GDOUJKZZ · 2025-12-16 · via 博客园 - GDOUJKZZ

  这两年开始用docker 来管理生产环境,每个应用独立启动一个docker容器,每个项目也打包一个docker镜像,进行更新和发布,最近竟然出现了磁盘空间占用满的情况。关键是我的磁盘也是100G的空间那种,按道理说不至于那么吓人,于是变开始查原因。

      然后在网上找了几个有用的命令【当然前提是,我们在搞docker容器的时候,记得把数据挂载到本地磁盘上,才能用下面的命令】

docker system prune -af --volumes

      上面这个命令是 Docker 中终极且高风险的资源清理命令,作用是:强制、全自动地清理 Docker 所有 “未被使用” 的系统资源(包括容器、镜像、网络、构建缓存,以及通常不会被默认清理的卷),且跳过所有交互式确认步骤,执行后会不可逆地删除这些资源,核心目的是释放磁盘空间。

find /var/lib/docker/overlay2/ -size +100M -type f 

  上面这个命令是找到这个目录下大于100M的,然后再执行删除命令如下【根据实际情况进行删除,因为有些文件被你删除了之后,会损坏镜像。如果损坏了镜像也没关系,重新生成换一个名字,然后重新pull到本地】。

sudo find /var/lib/docker/overlay2/ -size +100M -type f -name "app.jar" -exec rm -f {} +

      下面这个命令是清理log,有些容器的log也可能会很大,可以找到对应的文件来进行rm -rf 掉。

du -ha /var/lib/docker/containers/ | grep "json.log" | sort -rh

      上面这些搞完了之后,记得重启一下dcoker 。如果不方便的话,可以重启一下对应的几个docker 容器。

       通过上面操作之后,磁盘空间有了,够我继续造了。。。

 还是想找出为什么从根源解决这个问题

        主要的问题就是overlay2好大,这个是docker里面容器或者镜像的层,那为什么会产生这么多呢。

        原因是我docker镜像确实每两周几个项目都需要进行上线更新,发版,然后导致层数一直越来越多了,因为我们这边是把代码都扔到镜像里面去的。

        docker 层的生命周期

   构建镜像时:Base Layer → Layer1 → Layer2 → ... → Layer N   运行容器时:镜像层(只读) + 容器层(可写,在overlay2/diff目录)   停止容器:可写层保留(为了数据持久化)   删除容器:可写层被标记为未使用,但磁盘空间不立即释放
       说明构建镜像要注意,动态镜像变的东西放到dockerfile的文件后面一点。
       尽量还是不要经常的更新容器,不要用推镜像的方式进行更新代码。应该保留一个基础镜像,然后把目录挂载出来,更新代码就更新这个目录挂载的内容就好了。
       就是先构建一个大的基础包,每次将需要更新的内容传进容器,再更新容器。