Docker 缓存 / 资源彻底清理
**一、先查看 Docker 资源占用情况 **
清理前,务必先了解当前 Docker 的资源占用状况,避免盲目删除导致重要数据丢失。
- 查看整体占用情况
查看 Docker 整体磁盘使用情况(镜像、容器、卷、构建缓存)
docker system df
bash
输出结果说明:
Images:镜像占用空间
Containers:容器占用空间(含运行中 / 已停止)
Volumes:数据卷占用空间(关键!含持久化数据)
Build Cache:构建缓存占用空间
2. 查看详细占用详情
查看各维度资源的详细占用信息
docker system df -v
bash
该命令会展示镜像、容器、卷的具体数量、大小及创建时间,帮助你定位占用大户。
二、安全清理:仅删无用资源(推荐首选) ✅
安全清理的核心原则是:不删除运行中容器、在用镜像和重要数据卷,仅清理已停止的容器、悬空镜像和无用网络,适合日常维护。
- 基础安全清理(一键清理)
清理已停止容器、无用网络、悬空镜像和构建缓存
docker system prune
bash
执行后会出现确认提示,输入 y 即可完成清理。
- 无确认提示的安全清理(脚本适用)
强制清理,无需确认
docker system prune -f
bash
3. 安全清理删除的内容
所有已停止的容器
所有未使用的网络
所有悬空镜像(无标签、无引用的镜像)
所有未使用的构建缓存
4. 单独清理各类无用资源(精准控制)
如果只想清理某一类资源,可使用单独的 prune 命令:
仅清理已停止的容器
docker container prune -f
仅清理无用的网络
docker network prune -f
仅清理悬空镜像
docker image prune -f
仅清理未使用的构建缓存
docker builder prune -f
bash
三、彻底清理:删除所有未使用资源(慎用) ⚠️
彻底清理会删除所有未被使用的镜像(包括带标签但无容器引用的镜像),适合需要彻底重置环境的场景,生产环境慎用。
- 基础彻底清理
清理已停止容器、无用网络、所有未使用镜像和构建缓存
docker system prune -a
bash
2. 无确认提示的彻底清理
强制彻底清理,无需确认
docker system prune -a -f
bash
3. 彻底清理删除的内容
所有已停止的容器
所有未使用的网络
所有未被容器使用的镜像(无论是否有标签)
所有未使用的构建缓存
⚠️ 重要提醒
彻底清理不会删除数据卷!如果需要同时清理未使用的数据卷,需添加 --volumes 参数。
四、场景化清理:针对性解决特定需求 🎯
- 仅清理 Docker 构建缓存(开发常用)
构建缓存是 docker build 过程中产生的中间层缓存,累积后占用空间较大,仅清理缓存不影响现有镜像和容器:
清理未使用的构建缓存
docker builder prune
彻底清理所有构建缓存(含已使用缓存)
docker builder prune -a
强制清理,无需确认
docker builder prune -a -f
bash
2. 清理数据卷(含持久化数据,高危!)
数据卷存储着容器的持久化数据(如数据库文件、配置文件等),默认 prune 不会删除数据卷,手动清理需格外谨慎:
清理未使用的数据卷(谨慎使用!会删除无容器引用的卷数据)
docker volume prune -f
彻底清理:容器+网络+镜像+构建缓存+未使用卷
docker system prune -a --volumes -f
bash
⚠️ 数据卷清理风险提示
执行 docker volume prune 或 docker system prune --volumes 会永久删除未被容器引用的数据卷,卷内的所有数据将无法恢复!如果数据卷存储了业务核心数据,务必先备份。
- 清理悬空镜像(dangling images)
悬空镜像是指无标签、无名称、无容器引用的镜像,通常是 docker build 失败或多次构建产生的残留:
查看所有悬空镜像
docker images -f "dangling=true"
清理悬空镜像
docker image prune -f
强制清理悬空镜像(无需确认)
docker image prune -f
bash
五、Windows 系统专属注意事项 🖥️
在 Windows 系统中使用 Docker Desktop 时,清理资源后可能仍未释放空间,需额外处理:
-
重启 Docker Desktop
清理资源后,右键点击任务栏中的 Docker 图标,选择 Restart,让 Docker 重新加载资源信息。 -
清理 WSL 2 分发版缓存(关键!)
Docker Desktop 在 Windows 中依赖 WSL 2 运行,WSL 2 会占用大量磁盘空间,需手动清理:
查看 WSL 2 分发版列表
wsl --list --verbose
清理 WSL 2 缓存(以 Ubuntu 为例,其他分发版替换名称)
wsl --shutdown
wsl --compact Ubuntu
powershell
3. 权限问题处理
如果执行清理命令时提示 “权限不足”,请以管理员身份运行 PowerShell 或 CMD。
六、避坑指南:清理前必看 ⚓
先备份重要数据:清理数据卷前,务必备份卷内的持久化数据,避免误删核心业务数据。
区分运行中与已停止容器:docker ps 查看运行中容器,docker ps -a 查看所有容器,不要删除正在运行的容器。
确认镜像用途:彻底清理前,通过 docker images 查看镜像,确认是否为需要保留的基础镜像或业务镜像。
定期清理:建议每周执行一次基础安全清理,避免资源累积。
七、总结:常用命令速查 📝
场景 命令 安全性
日常维护清理 docker system prune -f ✅ 安全
彻底重置环境 docker system prune -a -f ⚠️ 慎用
清理构建缓存 docker builder prune -a -f ✅ 安全
清理数据卷(高危) docker system prune -a --volumes -f ❌ 危险
单独清理悬空镜像 docker image prune -f ✅ 安全
通过以上方法,可根据实际需求灵活选择清理方式,高效释放 Docker 占用的磁盘空间,保障环境稳定运行。如果是开发环境,建议定期执行基础安全清理,养成良好的维护习惯。

浙公网安备 33010602011771号