Docker系统空间占用过大的清理方法详解

 更新时间:2025年11月21日 08:47:40   作者:gs80140  
在日常使用 Docker 的过程中,我们经常会发现服务器磁盘空间莫名其妙地被占满,特别是 /var/lib/docker/overlay2 目录动辄几十个 G,下面我们就来看看如何清理吧

在日常使用 Docker 的过程中,我们经常会发现服务器磁盘空间莫名其妙地被占满。特别是 /var/lib/docker/overlay2 目录动辄几十个 G,让人怀疑是不是有人用 Docker 挖矿了……

其实,大部分情况下问题并不复杂:很多 Docker 镜像层、构建缓存、停止的容器,仍然占用大量空间却没有被清理。解决方案也非常简单,一条命令就能完成清理!

问题现象

使用 df -h 查看磁盘使用情况:

df -h

发现根目录 / 使用率接近 100%:

/dev/vda1   99%  /var/lib/docker/overlay2  占用非常大

进一步查看是 Docker 的 overlay2 目录占用了大量空间:

du -h --max-depth=1 /var/lib/docker/overlay2 | sort -hr | head

结果显示几十 GB 的无效目录,甚至根本不是正在使用容器的层:

20G  /var/lib/docker/overlay2/abc123...
18G  /var/lib/docker/overlay2/9dd...
...

但是这些目录又不敢直接 rm -rf 删除,担心删错了导致容器启动失败。

判断哪些目录不能删

我们可以用 docker inspect 判断某个 overlay2 层是否属于正在运行的容器:

docker inspect <CONTAINER_ID> --format '{{.GraphDriver.Data.UpperDir}}'

如果匹配到 /var/lib/docker/overlay2/<id>/diff 说明是正在使用,不能动。

但是手动检查太费时间!有没有一条命令能自动清理?

解决方案:一条命令,自动清理

docker system prune

默认清理内容:

清理内容说明
停止的容器Exited 状态
无用的网络bridge 等临时网络
dangling images<none> 类型的镜像层
build cacheDocker 构建缓存

执行时会提示确认:

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all build cache
Are you sure you want to continue? [y/N] y

效果立竿见影:清理后 overlay2 目录明显缩小,磁盘恢复正常!

如果想清理更多空间

docker system prune -a

这会额外清理 所有未使用的镜像(包括没有运行容器引用的)

更彻底的版本(连 volumes 一起清)

docker system prune -a --volumes

注意:执行前一定要确认 volume 是否还在使用!

清理前后对比

状态磁盘使用率
清理前98%
执行 docker system prune 后降到 65%
再执行 -a --volumes 后仅 40%

建议定期维护

可以写成定时任务,每周清理一次:

# /etc/crontab
0 3 * * SUN root docker system prune -a -f

总结

问题解决方法
overlay2 占空间大docker system prune
停止的容器太多docker ps -a → docker rm
镜像太多docker image prune -a
卷占空间docker volume prune

实战经验

千万不要手动 rm -rf /var/lib/docker/overlay2/...

最安全的清理方式永远是 Docker 官方命令!

这样不仅避免误删容器层,也让 Docker 内部的元数据保持一致,系统更稳定。

结语

如果你也遇到系统空间被 Docker 吃光的问题,不妨试试这一条命令:

docker system prune

到此这篇关于Docker系统空间占用过大的清理方法详解的文章就介绍到这了,更多相关Docker空间占用过大清理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决docker pull出现错误:Error response from daemon

    解决docker pull出现错误:Error response from daemon

    这篇文章主要给大家介绍了关于解决docker pull出现错误:Error response from daemon的相关资料,这个错误提示一般是因为你没有权限拉取对应的镜像,文中将解决办法介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • iptables如何限制宿主机跟Docker IP和端口访问(安全整改)

    iptables如何限制宿主机跟Docker IP和端口访问(安全整改)

    本文详细介绍了如何通过iptables对网络访问进行限制,包括限制特定IP或网段访问特定服务,以及在Docker环境下,如何设置DOCKER-USER链限制IP和端口访问,确保网络安全
    2024-10-10
  • Docker Dockerfile的使用实例

    Docker Dockerfile的使用实例

    这篇文章主要介绍了Docker Dockerfile的使用实例的相关资料,非常不错具有一定的参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • 部署Docker管理面板DweebUI的实现

    部署Docker管理面板DweebUI的实现

    DweebUI是一款简化Docker容器管理的Web界面,支持实时监控、多用户权限及跨平台操作,本文就来介绍部署Docker管理面板DweebUI的实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-06-06
  • docker ps容器未显示的问题以及排查过程详解

    docker ps容器未显示的问题以及排查过程详解

    这篇文章主要给大家介绍了关于docker ps容器未显示的问题以及排查过程的相关资料,相信各位在使用docker容器的时候,经常docker run -d后台运行后,使用docker ps的时候发现这个容器显示不到,这里给大家介绍下,需要的朋友可以参考下
    2023-09-09
  • Docker -p将容器内部的端口映射到宿主机的端口方式

    Docker -p将容器内部的端口映射到宿主机的端口方式

    文章介绍了使用-docker参数将容器内部端口映射到宿主机端口的方法,包括单端口映射、多端口映射、自动分配宿主机端口、查看实际端口、绑定特定宿主机IP和测试端口连通性
    2025-11-11
  • Docker环境下快速部署Ollama与Open-WebUI的详细指南

    Docker环境下快速部署Ollama与Open-WebUI的详细指南

    在本篇文章中,我们将深入探讨如何在Docker中高效部署 Ollama 和 Open-WebUI,并解决在实际使用中常见的问题,有需要的小伙伴可以跟随小编一起学习一下
    2026-03-03
  • CentOS7构建docker-ce的过程详解

    CentOS7构建docker-ce的过程详解

    使用CentOS 7.9系列的Linux操作系统,从CentOS系统基础配置开始,0到1快速构建docker应用,本文给大家分享CentOS7构建docker-ce的过程,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • docker nginx 配置文件要点及注意事项

    docker nginx 配置文件要点及注意事项

    本文介绍了Nginx的配置要点及注意事项,包括访问静态资源、负载均衡等,在访问静态资源时,可以使用root或alias指令指定路径,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-02-02
  • FastAPI 部署在Docker的详细过程

    FastAPI 部署在Docker的详细过程

    这篇文章主要介绍了FastAPI 部署在 Docker的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10

最新评论