如何解决导出并取消注册docker-desktop-data后,哪个WSL发行版正在使用AppData \ Local \ Docker \ wsl \ data \ ext4.vhdx
由于WSL的空间消耗增加,我不得不将WSL发行版移动到另一个磁盘。
Ubuntu
docker-desktop
docker-desktop-data
我使用了这些命令。 wsl --shutdown
wsl --export (on all three of those distros)
wsl --import (already on another disk)
现在我的环境运行良好,但是 AppData \ Local \ Docker \ wsl \ data 中的 ext4.vhdx 仍然存在,由于以下原因我无法将其删除它仍在使用。
它仍然被系统使用,并不能说明很多问题。
如果我运行WSL --shutdown
,则磁盘 E:中存在的所有虚拟磁盘都将丢失其句柄,而磁盘 C:中的虚拟磁盘仍在使用。
您知道如何找出WSL的哪一部分,甚至WSL正在使用吗? 由于关闭WSL不会删除该句柄,因此它可能会被其他东西使用。 它不是使用桌面的docker-for-desktop。
感谢您的建议。
解决方法
从WSL1升级到WSL2有点混乱,但是将docker-desktop重置为其默认设置,然后从WSL中清除数据(使用docker-desktop的问题排查)为我清除了此信息。
,Docker Desktop for Windows 使用 WSL2,将所有图像和容器文件存储在单独的虚拟卷 (vhdx) 中。这个虚拟硬盘文件可以在需要更多空间(达到一定限制)时自动增长。不幸的是,如果您回收一些空间,即通过删除未使用的图像,vhdx 不会自动缩小。幸运的是,您可以通过在 PowerShell 中(以管理员身份)调用此命令来手动减小其大小:
Optimize-VHD -Path $Env:LOCALAPPDATA\Docker\wsl\data\ext4.vhdx -Mode Full
如果上述命令失败
The system failed to compact 'C:\Users\Maxx\AppData\Local\Docker\wsl\data\ext4.vhdx':
The process cannot access the file because it is being used by another process. (0x80070020).
退出 Docker Desktop 或使用该文件停止服务和任务:
net stop com.docker.service
taskkill /IM "docker.exe" /F
taskkill /IM "Docker Desktop.exe" /F
wsl --shutdown
我回收了 40Gb 中的 15Gb。
Origin 的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。