Docker 缓存 / 资源彻底清理

**一、先查看 Docker 资源占用情况 **
清理前,务必先了解当前 Docker 的资源占用状况,避免盲目删除导致重要数据丢失。

  1. 查看整体占用情况

查看 Docker 整体磁盘使用情况(镜像、容器、卷、构建缓存)

docker system df
bash
输出结果说明:

Images:镜像占用空间
Containers:容器占用空间(含运行中 / 已停止)
Volumes:数据卷占用空间(关键!含持久化数据)
Build Cache:构建缓存占用空间
2. 查看详细占用详情

查看各维度资源的详细占用信息

docker system df -v
bash
该命令会展示镜像、容器、卷的具体数量、大小及创建时间,帮助你定位占用大户。

二、安全清理:仅删无用资源(推荐首选) ✅
安全清理的核心原则是:不删除运行中容器、在用镜像和重要数据卷,仅清理已停止的容器、悬空镜像和无用网络,适合日常维护。

  1. 基础安全清理(一键清理)

清理已停止容器、无用网络、悬空镜像和构建缓存

docker system prune
bash
执行后会出现确认提示,输入 y 即可完成清理。

  1. 无确认提示的安全清理(脚本适用)

强制清理,无需确认

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

三、彻底清理:删除所有未使用资源(慎用) ⚠️
彻底清理会删除所有未被使用的镜像(包括带标签但无容器引用的镜像),适合需要彻底重置环境的场景,生产环境慎用。

  1. 基础彻底清理

清理已停止容器、无用网络、所有未使用镜像和构建缓存

docker system prune -a
bash
2. 无确认提示的彻底清理

强制彻底清理,无需确认

docker system prune -a -f
bash
3. 彻底清理删除的内容
所有已停止的容器
所有未使用的网络
所有未被容器使用的镜像(无论是否有标签)
所有未使用的构建缓存
⚠️ 重要提醒
彻底清理不会删除数据卷!如果需要同时清理未使用的数据卷,需添加 --volumes 参数。

四、场景化清理:针对性解决特定需求 🎯

  1. 仅清理 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 会永久删除未被容器引用的数据卷,卷内的所有数据将无法恢复!如果数据卷存储了业务核心数据,务必先备份。

  1. 清理悬空镜像(dangling images)
    悬空镜像是指无标签、无名称、无容器引用的镜像,通常是 docker build 失败或多次构建产生的残留:

查看所有悬空镜像

docker images -f "dangling=true"

清理悬空镜像

docker image prune -f

强制清理悬空镜像(无需确认)

docker image prune -f
bash
五、Windows 系统专属注意事项 🖥️
在 Windows 系统中使用 Docker Desktop 时,清理资源后可能仍未释放空间,需额外处理:

  1. 重启 Docker Desktop
    清理资源后,右键点击任务栏中的 Docker 图标,选择 Restart,让 Docker 重新加载资源信息。

  2. 清理 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 占用的磁盘空间,保障环境稳定运行。如果是开发环境,建议定期执行基础安全清理,养成良好的维护习惯。

posted @ 2026-05-21 09:45  vello  阅读(123)  评论(0)    收藏  举报