You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

/dev/vda1磁盘空间耗尽,清理Docker后仍无法释放空间的求助

/dev/vda1磁盘空间耗尽,清理Docker后仍无法释放空间的求助

Hey Tibor,碰到这种清理完Docker还释放不了空间的情况确实挺闹心的,我给你梳理几个常见的排查方向和解决办法,你可以挨个试试:

  • 检查Docker日志文件的隐性占用
    Docker默认不会限制容器日志的大小,就算你删了容器,有些遗留的日志文件可能还躺在磁盘上占空间。你可以用这个命令找出大日志文件:

    find /var/lib/docker/containers -name "*.log" -exec du -h {} \; | sort -hr
    

    找到体积大的日志后,要么直接清空它(比如truncate -s 0 /path/to/your/logfile.log),要么后续给Docker配置日志大小限制——在/etc/docker/daemon.json里添加日志驱动配置,比如设置json-file驱动的最大文件大小和保留数量,这样就不会再出现日志占满磁盘的情况了。

  • 排查Docker目录里的残留文件
    有时候docker system prune可能没彻底清理干净/var/lib/docker下的残留文件,比如废弃的overlay2层、未被正确删除的挂载卷文件。你可以先看看这个目录下各子文件夹的占用情况:

    du -sh /var/lib/docker/*
    

    如果发现某个文件夹(比如overlay2或者tmp)还有不少占用,先停掉Docker服务:

    systemctl stop docker
    

    然后手动删除那些确认没用的残留文件(记得先确认没有正在运行的重要容器,必要的话可以先备份),删完再重启Docker:

    systemctl start docker
    
  • 确认是否是系统其他文件占用了空间
    说不定不是Docker的锅,系统本身的临时文件、系统日志或者其他应用也可能占了不少空间。你可以用这些命令排查:

    • 查看根目录下各文件夹的大小:du -sh /*,定位到占用最大的文件夹
    • 检查系统日志的占用:journalctl --disk-usage,如果太大可以清理旧日志:journalctl --vacuum-size=1G(这里的1G可以根据你的需求调整)
    • 清理/tmp目录下的过期文件:rm -rf /tmp/*(注意别删正在被使用的文件)
  • 检查Overlay2的孤立镜像层
    偶尔会出现一些未被任何镜像或容器引用的孤立overlay2层,docker system prune可能没识别到。你可以先试试用这个命令预览会清理的镜像层:

    docker image prune -a --dry-run
    

    如果显示有可以清理的内容,直接去掉--dry-run执行清理;要是还是不行,就先停Docker,然后手动检查/var/lib/docker/overlay2目录,删除那些没有关联镜像的文件夹(这个操作要谨慎,最好先确认每个文件夹的用途)

备注:内容来源于stack exchange,提问作者Tibor Janosi

火山引擎 最新活动