Docker桌面WSL ext4.vhdx太大

ukqbszuj  于 2022-12-26  发布在  Docker
关注(0)|答案(3)|浏览(2342)

我已经安装了WSL以及Docker桌面。
我试着尽可能地通过逃跑来收拾Docker

docker system prune -a

docker volume rm $(docker volume ls -q -f dangling=true)

然后我确认了

❯ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          0         0         0B        0B
Containers      0         0         0B        0B
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B

不过,我看到我还有WSL使用的近12G。
我假设这个文件是与Docker相关的。为什么尽管我删除了所有容器和卷,它还是这么大?
我如何缩小它(或者我可以删除它吗?)

pgx2nnw8

pgx2nnw81#

如果您愿意擦除所有Docker数据,请打开Docker Desktop客户端,点按顶栏中的错误图标,然后点按“清理/清除数据”:

来源:link

7bsow1i6

7bsow1i62#

作为参考,有一个关于这个主题的开放的Github issue
WSL2虚拟磁盘是"动态"的.vhdx,这意味着它们:

  • 分配到最大大小
  • 仅使用几千字节的结构化数据进行初始化
  • 随着数据的添加而动态增长,直至达到其最大分配大小
  • 这里有一个问题--当数据被删除时,它们不会自动缩小。

但是,当然可以手动优化它们。
第0步:对于其他正在阅读本文的人,请跟随OP的领导,首先使用正常的Docker命令清理Docker数据。
接下来,在所有情况下:

  • 停止Docker桌面
  • 来自PowerShell或CMD的wsl --shutdown

由于您已经删除了所有数据(容器、映像、卷),您可以只删除整个映像:

  • 卸载Docker桌面
  • 从PowerShell:
wsl -l -v
# If they still exist, remove via ...
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

重要信息:请注意,这些都是破坏性操作,因此请确保您确实不需要Docker Desktop中的任何数据。

  • 重新安装Docker桌面

对于那些需要保留数据,但仍需要回收一些空间的客户:

  • 复制ext.vhdx作为备份。请注意,在使用以下任一技术时,都有损坏的报告。

然后,正如Github那期的评论中所指出的:

  • 在Windows Pro上,您可以启用Hyper-V功能,然后根据原始Github问题在PowerShell中运行Optimize-VHD cmdlet:
Optimize-VHD -Path .\ext4.vhdx -Mode full
  • 如果使用Windows Home,您需要根据此评论使用diskpart
  • 重新启动Docker Desktop并确认其功能正常,并且在删除备份的ext4.vhdx之前所有预期数据均完好无损。
nszi6y05

nszi6y053#

(2022年12月更新)
Windows实用程序diskpart现在可以用来缩小虚拟硬盘(vhdx文件),只要你通过删除任何不必要的文件来释放它内部的空间。我在this guide中找到了这些信息。
我把说明的要点放在下面以供参考,但上面的指南更完整。
首先,打开管理员命令窗口并键入以下命令,确保关闭所有WSL示例:

>> wsl --shutdown

验证是否通过以下方式停止所有操作:

>> wsl.exe --list --verbose

然后启动磁盘部件:

>> diskpart

和内部盘部件类型:

DISKPART> select vdisk file="<path to vhdx file>"

例如:

DISKPART> select vdisk file="C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_12rqwer1sdgsda\LocalState\ext4.vhdx"

它应该以DiskPart successfully selected the virtual disk file.作为响应
然后缩小

DISKPART> compact vdisk

在此之后,VHDX文件的使用量应该会减少。在我的情况下,它从40GB减少到4GB。您可以键入exit退出diskpart。

相关问题