/var/lib/docker/overlay2 占用很大,清理Docker占用的磁盘空间
今天收到一个磁盘告警,告警的原因是一台 Jenkins 机器上某个磁盘空间满了。
马上使用 df -h 命令看下使用情况
上图是我优化后的截图,告警的时候磁盘使用量已经接近 100%。
上图中看到的 overlay 分区是 Docker 的虚拟文件系统,其真实的文件系统是 /dev/vda1。所以我们要找到是什么原因大量占据了 /dev/vda1。
一般有两种情况。
无用的镜像和容器太多#
我们可以使用以下命令大致看下情况
docker system df -v
# 用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及无tag的镜像。
docker system prune
# 可以将没有容器使用 Docker 镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了
docker system prune -a
容器输出的日志太大#
这种情况往往是容器长时间运行,容器打印了大量的日志未清理,占据了大量磁盘空间。比如之前运行的一个Jenkins容器,运行几个月后,打印的日志占了近10个G的磁盘。这种情况下清理日志文件就行了。
容器的日志文件在/var/lib/docker/containers/{containerId}下。
[root@i-h8v5dv1n 55406a3ac6f4a59555897c606677201853973f4266c32284eeb8274682fd099d]# ls -al
total 512
drwx-----x 4 root root 4096 Feb 8 17:57 .
drwx-----x 4 root root 4096 Feb 8 17:54 ..
# -json.log就是日志文件
-rw-r----- 1 root root 478546 Feb 8 18:05 55406a3ac6f4a59555897c606677201853973f4266c32284eeb8274682fd099d-json.log
drwx------ 2 root root 4096 Oct 28 15:01 checkpoints
-rw------- 1 root root 4911 Feb 8 17:57 config.v2.json
-rw-r--r-- 1 root root 1782 Feb 8 17:57 hostconfig.json
-rw-r--r-- 1 root root 13 Feb 8 17:57 hostname
-rw-r--r-- 1 root root 174 Feb 8 17:57 hosts
drwx-----x 2 root root 4096 Oct 28 15:01 mounts
-rw-r--r-- 1 root root 131 Feb 8 17:57 resolv.conf
-rw-r--r-- 1 root root 71 Feb 8 17:57 resolv.conf.hash
可以删除日志文件,也可调整应用程序让打印的日志保持在某种大小。
日志、大文件占用了 /dev/vda1 分区#
还有一种情况就是 一些日志文件,大文件占用了 /dev/vda1 分区。这个分区一般是挂载在 “/” 下面。
所以我们可以重点关注下面几个目录:
- /var/tmp
- /var/log
- /root
作者:程序员自由之路
出处:https://www.cnblogs.com/54chensongxia/p/15138314.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?