
自从 Docker 问世以来,应用的部署方式就发生了翻天覆地的变化。借助容器化技术,开发与运维流程变得越发灵活,效率也得到了大幅提升。就连 Homelab 玩家,也能随时拉取一个感兴趣的应用来玩玩儿 😘。
但是,随着 Docker 环境的不断扩展,如何高效管理容器、镜像、数据卷和网络等资源,就成了一个不可忽视的问题。于是乎,我们就需要借助一些常用命令和实用技巧,科学地进行 Docker 环境清理,移除那些不再需要的资源,来防止资源堆积,并降低安全风险。
什么是 Docker 清理?
在日常使用过程中,你肯定会不断创建容器。这些容器本质上是轻量级、可移植的运行环境,用来封装应用及其依赖。但随着开发迭代,容器、镜像、数据卷和网络的数量也会不断膨胀。如果不加以清理,这些历史资源就会霸占大量磁盘空间,影响系统性能。
Docker 清理,简单来说就是——对资源进行统一管理和合理移除。定期发现并删除那些未被使用或已无留存必要的冗余资源。
这样做不仅能够有效释放磁盘空间,还能提升系统运行效率,让环境更加井然有序,确保应用稳定流畅地运行。
合理进行 Docker 清理,可以有效避免资源堆积,维持整洁的开发与生产环境。
Docker 基础知识回顾
要高效地完成 Docker 清理,首先你得理解 Docker 的核心资源类型:
- 在 Docker 中,「镜像」相当于应用运行所需环境的完整打包,包含了所有必备文件及系统配置。当你基于镜像运行应用时,就会生成一个独立的「容器」。每个容器都是一个隔离的小型运行环境,确保应用彼此独立且高效运行。
- 容器之间通过「网络」实现互联,可以便捷地进行通讯和数据交换。与此同时,「数据卷」为容器提供了数据持久化支持,即便容器被重启或删除,重要数据也能够保留下来并继续访问。
正因为如此,镜像、容器、网络与数据卷共同构成了 Docker 容器化的基础。只有掌握这些核心概念,才能更有针对性地进行资源管理和清理,让应用的部署与维护更加高效、可靠。
Docker 磁盘空间管理
定期检查 Docker 的磁盘空间占用,是防止「磁盘被爆」的重要举措。这不仅有助于保障系统性能,还能有效预防部署失败、容器运行缓慢等潜在问题。
1你可以使用以下命令,快速了解当前 Docker 占用了多少磁盘空间:
docker system df
这条命令会统计镜像、容器、数据卷以及构建缓存等 Docker 组件的磁盘使用情况,并输出一个概览信息。
2如果你想看到更详细的磁盘占用数据,在命令后面加上-v参数就行:
docker system df -v
这样就能详细列出每个具体资源的使用情况,包括空间占用、文件系统类型、挂载点等信息。

Docker Prune 命令:一键清理神器
docker system prune命令可以说是清理 Docker 环境的「一键神器」。当你的磁盘空间告急,或者只想保留「真正必要」的 Docker 资源时,它都能帮你轻松移除那些无用数据。具体来说,它能自动删除以下内容:
- 所有「已停止」的容器。
- 所有未被任何容器使用的网络。
- 所有悬空镜像。
- 不使用的构建缓存。
在开发、测试,或者 Homelab 玩家的环境中,由于频繁创建和删除容器、镜像,很容易造成资源堆积。此时,只要你执行下面这条「神操作命令」,就能快速释放磁盘空间,让环境保持整洁高效:
docker system prune

执行该命令后,Docker 就会自动扫描并移除所有未被使用的资源,帮你高效回收空间。虽然也可以加-f参数来强制删除,但极不推荐,(移除前)最好还是先确认一下。
如果你只是想让 Homelab 中的 Docker 环境保持干净清爽,并且支持自动更新镜像和容器,可以考虑装一个 Watchtower 来完成自动化,后文内容可以略过了。
Docker 镜像删除指南
按需删除指定镜像
1我们可以通过以下命令查看当前系统中所有的 Docker 镜像(包括基础镜像和中间层镜像),详细信息包括了镜像 ID 和 Tag 等:
docker images -a
2在确认要删除的镜像后,再通过以下命令,结合镜像 ID 或 Tag 进行精准删除。
- 根据镜像 ID 删除指定镜像:
docker rmi <image_id>
执行完该命令后,Docker 会先解除该镜像的 Tag 绑定,然后彻底删除镜像文件。同时,还会自动识别并清除那些仅被这个镜像引用的层(Layer),进一步节省磁盘空间。

- 根据镜像 Tag 删除:
docker rmi <image_tag>
- 同时删除多个镜像:
docker rmi <image1> <image2> <image3>
- 一键删除全部本地镜像(谨慎使用 😈):
docker rmi $(docker images -a -q)
借助过滤器精准清理镜像
docker image prune命令支持灵活的过滤参数,可以帮你更加精准地批量清理无用(悬空)镜像。比如:
docker image prune --filter "your_filter"
通过不同的过滤条件,可以帮你高效清理特定类型的镜像:
- 删除 24 小时前创建的悬空镜像:
docker image prune --filter "until=24h"
- 删除带有特定 Label 的镜像:
docker image prune --filter "label=unused"
- 删除所有悬空镜像:
docker image prune --filter "dangling=true"
基于模式批量筛选并删除镜像
如果你想先通过关键词来筛选镜像,然后再批量删除,可以按照以下步骤操作:
1列出所有本地镜像:
docker images -a
2通过命令筛选出符合特定模式的镜像:
docker images -a | grep "node"
3使用awk和xargs组合,将筛选结果传递给docker rmi,进行批量删除:
docker images -a | grep "pattern" | awk '{print $1":"$2}' | xargs docker rmi
通过以上方式,你可以灵活筛选目标镜像,并进行高效批量清理。
Docker 容器删除指南
按需删除指定容器
要删除一个或多个 Docker 容器,可以使用docker rm命令,后接要删除的容器 ID 或名称:
docker rm <ID_or_Name>

容器退出后自动删除
如果你希望容器在退出后自动删除,只需要在运行容器时加上--rm参数:
docker run --rm <image_name>
批量删除所有「已退出」的容器
1使用以下命令,查看所有「已停止」(exited)的容器,识别待清理对象:
docker ps -a -f status=exited
2使用-q参数输出容器 ID,再配合docker rm批量删除所有「已退出」的容器:
docker rm $(docker ps -a -f status=exited -q)
按模式批量筛选并删除容器
你也可以根据容器名称或其他关键字筛选目标容器,再进行清理。例如:
1查找所有名称或相关信息包含「pattern」的容器:
docker ps -a | grep "pattern"
2再结合awk和xargs,批量删除这些容器:
docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm
一键清理所有「已停止」容器
使用以下命令,可以一键删除所有「已停止」(stopped)的容器(谨慎操作 😈):
docker container prune

一键删除所有 Docker 容器
如果要彻底删除系统中的所有容器(无论是否正在运行),可以使用以下命令(极度谨慎 😈😈):
docker rm $(docker ps -aq)
Docker 数据卷删除指南
按需删除指定数据卷
1如果你想删除一个或多个特定的数据卷,可以先使用以下命令列出所有数据卷:
docker volume ls
2根据查询结果,使用以下命令,指定要删除的数据卷名称或 ID:
docker volume rm <volume_name> <volume_id>

删除悬空数据卷
1如果要清理那些未被任何容器使用的悬空数据卷,可以添加-f dangling=true参数进行过滤查看:
docker volume ls -f dangling=true
2然后再使用docker volume rm命令逐个或批量删除。
一键清理未使用数据卷
如果你想一键清理所有无用数据卷,可以使用以下命令(谨慎操作 😈):
docker volume prune

Docker 网络删除指南
删除指定网络
1当你需要删除一个或多个特定网络时,可以先使用以下命令列出当前所有网络:
docker network ls
2根据查询结果,使用以下命令,指定要删除的网络名称或 ID:
docker network rm <network_name> <network_id>

如果你一次性传入多个网络参数,Docker 会按顺序逐个尝试删除。如果其中某个网络无法删除(例如正被某个容器占用),它会自动跳过,并继续删除后续的网络。
Docker 清理命令速查表
为了方便大家快速查阅和动手实操,这里整理了一份最常用的 Docker 清理命令速查表:
| 命令 | 说明 |
|---|---|
docker system df | 查看 Docker 磁盘资源占用情况 |
docker system prune | 一键删除所有未使用的容器、网络、镜像 |
docker rmi $(docker images -a -q) | 删除所有本地镜像 |
docker image prune --filter "dangling=true" | 清理所有悬空镜像 |
docker rm $(docker ps -a -f status=exited -q) | 删除所有「已退出」的容器 |
docker container prune | 清理所有「已停止」的容器 |
docker volume prune | 清理所有未使用的数据卷 |
docker network prune | 清理所有未使用的网络 |
合理的 Docker 清理,是高效管理资源的基础。通过系统性地删除不使用的容器、镜像、数据卷和网络,不仅可以有效释放磁盘空间,还能提升系统整体性能,并降低潜在的安全风险。本文汇总了最实用的清理命令和技巧,希望能你高效维护 Docker 环境,践行最佳实践 🚀。















最新评论
方法1:删除「主文件夹」 --System.IsPinnedToNameSpaceTree--可以通过把数值数据修改成- 0 -进行隐藏
可以 可以解决问题,终于不用每次下载东西都默认下载到图库里面,这样就可以默认下载到桌面了 导航点击权限,然后点击高级,然后下一个框在它的正上方有一个名称,要把它改成修改,然后按照阿婆主说的 (在“高级安全设置”窗口的顶部,您会看到“所有者:”后面显示的是 TrustedInstaller。点击旁边的 “更改” 链接。) 然后再把两个用户名修改成完成权限,然后就可以修改了
2025-11 预览更新 (KB5070311) (26200.7296)一直更新错误,反复多次均以第二次重启后失败告终,请问是什么问题?
太傻比了,还是用virtualbox算了