Any*_*ify 10 diskspace windows-subsystem-for-linux docker-desktop
由于 WSL 的空间消耗不断增加,我被迫将 WSL 发行版移至另一个磁盘。
Ubuntu
docker-desktop
docker-desktop-数据
我使用了这些命令。
wsl --shutdown
wsl --export (on all three of those distros)
wsl --import (already on another disk)
现在我的环境运行良好,但AppData\Local\Docker\wsl\data中的ext4.vhdx仍然存在,并且由于仍在使用而我无法删除它。
它仍然被系统使用,这并没有说明太多。
如果我运行磁盘E:WSL --shutdown上存在的所有虚拟磁盘,则会丢失其句柄,而磁盘C:上的虚拟磁盘仍在使用中。
您知道如何找出 WSL 的哪一部分或者它是否是 WSL 正在使用?由于关闭 WSL 不会删除该句柄,因此它可能会被其他东西使用。它不是使用不同磁盘的 docker-for-desktop。
感谢您的建议。
Max*_*lov 12
Docker Desktop for Windows 使用 WSL2,将所有映像和容器文件存储在单独的虚拟卷 (vhdx) 中。当需要更多空间(达到一定限制)时,该虚拟硬盘文件可以自动增长。不幸的是,如果您回收一些空间,即通过删除未使用的图像,vhdx 不会自动缩小。幸运的是,您可以通过在 PowerShell 中调用以下命令(以管理员身份)来手动减小其大小:
Optimize-VHD -Path $Env:LOCALAPPDATA\Docker\wsl\data\ext4.vhdx -Mode Full
Run Code Online (Sandbox Code Playgroud)
如果上述命令失败并显示
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).
Run Code Online (Sandbox Code Playgroud)
退出 Docker Desktop 或停止使用该文件的服务和任务:
net stop com.docker.service
taskkill /IM "docker.exe" /F
taskkill /IM "Docker Desktop.exe" /F
wsl --shutdown
Run Code Online (Sandbox Code Playgroud)
我回收了 40Gb 中的 15Gb。
解决方案的起源。
从 WSL1 升级到 WSL2 让它有点混乱,但是将 docker-desktop 重置为其默认设置,然后从 WSL 中清除数据(使用 docker-desktop 故障排除)为我清除了它。
| 归档时间: |
|
| 查看次数: |
9299 次 |
| 最近记录: |