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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - GDOUJKZZ

.net 8程序如何在信创的arm64架构下运行【nuget包如何判断能不能在arm架构跑呢】 【AI应用】【声纹识别】一、mini io 来构建高可用的文件存储方案 【AI】第五篇 大话说神经网络第一篇 【AI】第四篇 什么是神经网络 - GDOUJKZZ 【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的文件后面一点。
       尽量还是不要经常的更新容器,不要用推镜像的方式进行更新代码。应该保留一个基础镜像,然后把目录挂载出来,更新代码就更新这个目录挂载的内容就好了。
       就是先构建一个大的基础包,每次将需要更新的内容传进容器,再更新容器。