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里建立容器的操作方法

    删除docker里建立容器的操作方法

    在本篇文章里小编给大家分享了一篇关于删除docker里建立容器的操作方法,需要的朋友们可以学习下。
    2020-03-03
  • docker启动mysql5.7服务详细说明

    docker启动mysql5.7服务详细说明

    这篇文章主要给大家介绍了关于docker启动mysql5.7服务的相关资料,文中通过代码示例介绍的非常详细,对大家的学习或者工作具有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • 快速安装Docker详细步骤教程

    快速安装Docker详细步骤教程

    这篇文章主要为大家详细的介绍了快速安装Docker的详细步骤教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • docker python api 安装配置的详解

    docker python api 安装配置的详解

    这篇文章主要介绍了docker python api 安装配置的详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-10-10
  • Docker部署PDF查看器PdfDing的实现

    Docker部署PDF查看器PdfDing的实现

    PdfDing是一种轻量级的应用程序,可以通过Docker轻松地在服务器上设置,本文主要介绍了Docker部署PDF查看器PdfDing的实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-06-06
  • Docker多阶段镜像构建的实现

    Docker多阶段镜像构建的实现

    本篇文章主要介绍了Docker多阶段镜像构建的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Docker打印和配置环境变量的命令详解

    Docker打印和配置环境变量的命令详解

    在现代应用开发中,Docker 提供了一种有效的容器化解决方案,使得应用的部署、扩展和管理变得更加灵活,环境变量在容器化应用中起着重要作用,它们可以帮助配置应用的运行环境,本文给大家介绍了在 Docker 容器中打印和配置环境变量,需要的朋友可以参考下
    2024-10-10
  • Jenkins整合Docker自动化部署的实现

    Jenkins整合Docker自动化部署的实现

    本文主要介绍了Jenkins整合Docker自动化部署的实现,通过结合Jenkins的持续集成和Docker的容器化技术,可以高效地构建、测试和部署应用程序,感兴趣的可以了解一下
    2023-11-11
  • 完美卸载Docker的详细步骤

    完美卸载Docker的详细步骤

    Docker是一种流行的容器化平台,但是有时候我们可能需要卸载Docker,无论是因为需要重新安装版本,还是因为不再需要使用Docker,无论何种原因,正确地卸载Docker是很重要的,以确保系统的干净和稳定,下面跟大家详细介绍如何彻底卸载Docker的方法,让你能够轻松地清理干净
    2023-11-11
  • docker启动报错问题OCI runtime create failed: container_linux.go:380: starting container process

    docker启动报错问题OCI runtime create failed: c

    这篇文章主要介绍了docker启动报错问题OCI runtime create failed: container_linux.go:380: starting container process,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08

最新评论