欢迎光临
我们一直在努力

Docker 删除了镜像但磁盘空间没减少?原因比你想的更复杂

传送锚点

    • 查看 Docker 实际占用情况
    • 清理未使用资源(Linux 和 Windows 通用)
    • 如果你是通过 Windows + Docker Desktop(WSL2) 使用
    • 解决方法
      • 第一步:关闭 WSL + Docker
      • 第二步:压缩 ext4.vhdx(Windows 命令行)

在使用 Docker 时,很多人会遇到:

已经删除了镜像,但磁盘空间还是没有减少

其实问题通常不在镜像,而是 构建缓存、悬空层、未使用的容器/网络 仍然占着大量空间。

很多人会误解,以为 docker images 中显示的镜像大小就是其在磁盘上真实占用的空间。但事实上那只是“逻辑大小”。Docker 镜像由多层(layers)组成,而这些层会在多个镜像之间共享。如果某个镜像的层仍被其他镜像或构建缓存引用,那么即使你删除了该镜像,这些层也不会被真正删除。

因此,就会出现一种常见情况:

镜像看起来有几百 MB 或几 GB,但删除后磁盘空间可能 1MB 都没有减少。

真正占空间的大头往往是构建过程中产生的 build cache,它不会显示在 docker images 中,却可能占用几十甚至上百 GB。

不用复杂排查,只需要两条命令就能搞定。


查看 Docker 实际占用情况

docker system df -v

它可以看到:

  • 镜像占用多少
  • 容器占用多少
  • 卷占用多少
  • 构建缓存(build cache)大小 ← 通常最大

清理未使用资源(Linux 和 Windows 通用)

docker system prune -a

这会删除未使用的:

  • 镜像
  • 容器
  • 网络
  • 构建缓存

如果需要连卷一起删:

docker system prune -a –volumes


如果你是通过 Windows + Docker Desktop(WSL2) 使用

你可能会遇到:

执行 prune 后 WSL 内空间确实减少了,但 Windows 磁盘容量完全没变化。

这是因为 Docker 在 Windows 上的数据存储在:

安装位置不同可能导致路径不一致,比如眨眼睛的路径是"E:\\Docker\\DockerDesktopWSL\\disk\\docker_data.vhdx"

%USERPROFILE%\\AppData\\Local\\Docker\\wsl\\data\\ext4.vhdx

这个虚拟磁盘(VHDX 文件)会随着使用变大,但不会自动变小。 这属于 WSL2 的设计限制。

所以即使你清理了 Docker 的数据,ext4.vhdx 仍然保持原来的大体积,Windows 的磁盘当然不会减少。


解决方法

第一步:关闭 WSL + Docker

wsl —shutdown

在这里插入图片描述


第二步:压缩 ext4.vhdx(Windows 命令行)

Windows 内置 diskpart 可以压缩 VHDX,适用于所有版本(包括家庭版)。

打开 PowerShell:

diskpart

进入 diskpart 输入:

修改过存储位置可能并非该路径,需要自行找到相应vhdx文件,怎么判断?用于存储数据的自然就是找最大那个vhdx文件

select vdisk file="C:\\Users\\你的用户名\\AppData\\Local\\Docker\\wsl\\data\\ext4.vhdx"
compact vdisk
exit

compact vdisk 会真正释放未使用的磁盘空间,使 Windows 的磁盘占用立刻减少。

在这里插入图片描述 成功啦,减了400G😁 在这里插入图片描述

赞(0)
未经允许不得转载:171主机测评 » Docker 删除了镜像但磁盘空间没减少?原因比你想的更复杂
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址