千家信息网

怎么清理Docker占用的磁盘空间的方法

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下怎么清理Docker占用的磁盘空间的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Docker 很占用空间,每当我们运行容器、拉取镜像、部署应用、构建自己的镜像
千家信息网最后更新 2026年11月03日怎么清理Docker占用的磁盘空间的方法

小编给大家分享一下怎么清理Docker占用的磁盘空间的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

Docker 很占用空间,每当我们运行容器、拉取镜像、部署应用、构建自己的镜像时,我们的磁盘空间会被大量占用。

如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何回收。

docker 占用的空间可以通过下面的命令查看:

$ docker system df

TYPE 列出了docker 使用磁盘的 4 种类型:

  • Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。

  • Containers:运行的容器占用的空间,表示每个容器的读写层的空间。

  • Local Volumes:容器挂载本地数据卷的空间。

  • Build Cache:镜像构建过程中产生的缓存空间(只有在使用 BuildKit 时才有,Docker 18.09 以后可用)。

最后的 RECLAIMABLE 是可回收大小。

下面就分别了解一下这几个类型。

容器的磁盘占用

每次创建一个容器时,都会有一些文件和目录被创建,例如:

  • /var/lib/docker/containers/ID目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形式保存到此目录下。

  • /var/lib/docker/overlay2 目录下含有容器的读写层,如果容器使用自己的文件系统保存了数据,那么就会写到此目录下。

现在我们从一个完全干净的系统开始,假设 docker 刚刚安装:

首先,我们启动一个 NGINX 容器:

现在运行 df 命令后,就会看到:

  • 一个镜像,126MB

  • 一个容器

此时没有可回收空间,因为容器在运行,镜像正被使用。

现在,我们在容器内创建一个 100MB 的空文件:

$ docker exec -ti www \ dd if=/dev/zero of=test.img bs=1024 count=0 seek=$[1024*100]

再次查看空间:

可以看到容器占用的空间增加了,这个文件保存在本机哪里呢?

和上面说的一样,是保存在容器的读写层。

当停止容器后,容器占用的空间就会变为可回收的:

如何回收呢?删除容器时会删除其关联的读写层占用的空间。

也可以一键删除所有已经停止的容器:

$ docker container prune

删除容器后,镜像也可以回收了:

上面的 docker container prune 命令是删除停止的容器,如果想删除所有容器(包括停止的、正在运行的),可以使用下面这2个命令:

$ docker rm -f $(docker ps -aq)$ docker container rm -f $(docker container ls -aq)

镜像的磁盘占用

有一些镜像是隐形的:

  • 子镜像,就是被其他镜像引用的中间镜像,不能被删除。

  • 悬挂状态的镜像,就是不会再被使用的镜像,可以被删除。

下面的命令列出所有悬挂状态的镜像:

$ docker image ls -f dangling=true

删除这类镜像:

$ docker image rm $(docker image ls -f dangling=true -q)

或者:

$ docker image prune

如果想删除所有镜像,可以使用下面的命令:

$ docker image rm $(docker image ls -q)

注意,正在被容器使用的镜像是不能被删除的。

数据卷的磁盘占用

数据卷是容器自身文件体统之外的数据存储。

例如容器中的应用有上传图片的功能,上传之后肯定不能保存在容器内部,因为容器内部的数据会随着容器的死掉而被删除,所以,这些图片要保存在容器之外,也就是数据卷。

比如我们运行了一个 MongoDB 容器做测试,导入了很多测试数据,这些数据就不是在容器内部的,是在数据卷中,因为 MongoDB 的 Dockerfile 中使用了数据卷。

测试完成后,删除了这个 MongoDB 容器,但测试数据还在,没被删除。

删除不再使用的数据卷:

$ docker volume rm $(docker volume ls -q)

或者:

$ docker volume prune

Build Cache 的磁盘占用

Docker 18.09 引入了 BuildKit,提升了构建过程的性能、安全、存储管理等能力。

删除 build cache 可以使用命令:

$ docker builder prune

一键清理

通过上面的说明,我们知道了像容器、镜像、数据卷都提供了 prune这个子命令,帮助我们回收空间。

其实,docker 系统层面也有 prune 这个子命令,可以一键清理没用的空间:

$ docker system prune

定期执行这个命令是个好习惯。

看完了这篇文章,相信你对"怎么清理Docker占用的磁盘空间的方法"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

容器 空间 镜像 数据 命令 磁盘 运行 文件 目录 面的 测试 系统 一键 方法 个子 图片 就是 日志 是在 正在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云南咖啡 亿人帮互联网科技有限公司 上海卓越科技互联网 河南云网互联网络科技有限公司 厦门中拓互联网络科技有限公司 互联网科技卖菜 易互联网科技有限公司 互联网科技公司发展 奇酷互联网科技公司 丰台科技园 互联网公司 深圳卡尔迅互联网科技有限公司怎么样 速维有品互联网信息科技(苏州)有限公司 深圳市优智互联网科技有限公司 威龙国际互联网科技公司 玉溪新华互联网科技好不好 山东星卡互联网科技有限公司官网 皮皮虾互联网科技有限公司 广州智享互联网科技 互联网科技职业技能培训学校 青岛互联网科技园 互联网金融 科技金融 上海致骋互联网科技 融势互联网科技 甘肃拓世互联网科技有限公司 互联网科技与管理 科技大学互联网 风投北京互联网科技 上海同邻互联网科技有限公司规模 科技互联网行业投资研究 版纳互联网科技选哪家
0