1. 清理系统垃圾
首先执行标准的清理命令,删除悬空镜像和构建缓存:
# 删除所有停止的容器、未使用的网络和悬空镜像
docker system prune -f
# 专门清理构建缓存(BuildKit cache)
docker builder prune -f
2. 精准分析谁在占用空间
查看镜像的独占空间 (Unique Size)。
请在终端执行以下命令:
#看总量
docker system df
#查看镜像的独占空间 (Unique Size)
docker system df -v
重点关注输出中的 Images space usage 部分,查看以下几个字段:
- SIZE: 镜像总大小。
- SHARED SIZE: 与其他镜像共享的大小(删了它也不会省这么多空间)。
- UNIQUE SIZE : 关键指标! 该镜像独占的空间。
- CONTAINERS: 关联的容器数量(如果是 0,说明没在运行)。
然后可以逐个自行判断,予以删除
docker rmi -f 镜像
或者是观察docker system df的结果,例如如果看到 Images 有 13 个,但 ACTIVE 只有 1 个。这意味着有 12 个镜像是"悬空"或未被当前容器引用的。
-
温和清理 (仅删除无标签的悬空镜像):
docker image prune -
深度清理 (删除所有未被容器引用的镜像):
docker image prune -a注意:这会删除那 12 个非活跃镜像。如果你的业务容器没有正在运行,建议执行此命令。
清理本地卷 (Local Volumes)
根据docker system df输出显示的 Local Volumes 判断,同样是根据TOTAL和ACTIVE对比判断有几个卷是闲置的。
docker volume prune -a
3. 压缩虚拟磁盘 (关键步骤)
如果 docker system df 显示占用很小,但 C 盘/D 盘空间依然被占满,说明需要压缩虚拟磁盘。
操作步骤:
-
彻底关闭 Docker:右键点击任务栏 Docker 图标选择 "Quit Docker Desktop"。
-
关闭 WSL :打开 PowerShell,输入
wsl --shutdown。 -
定位磁盘文件 :
- 通常在:
C:\Users\你的用户名\AppData\Local\Docker\wsl\data\ext4.vhdx
- 通常在:
-
使用 Diskpart 压缩 :
-
以管理员身份运行 PowerShell 或 CMD。
-
输入
diskpart进入工具。 -
依次执行以下命令(注意替换路径):
diskpart select vdisk file="C:\Users\你的用户名\AppData\Local\Docker\wsl\data\ext4.vhdx" attach vdisk readonly compact vdisk detach vdisk exit
-
-
重启 Docker:操作完成后,重新启动 Docker Desktop,你会发现磁盘占用已大幅减少。