【已解决】Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题

您所在的位置:网站首页 操作无法完成因为文件已在todo 【已解决】Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题

【已解决】Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题

2023-08-31 06:56| 来源: 网络整理| 查看: 265

【已解决】Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题 1、起因及原因2、解决2.1 找到要压缩的虚拟磁盘文件2.2 关闭 Docker Desktop2.3 压缩虚拟磁盘文件 3、偏招

1、起因及原因

很多同学拉取镜像使用一段时间后发现 C 盘快满了,把之前用过的镜像和容器删除,发现 WSL 挂载目录的虚拟磁盘大小没有变化,非常的奇怪。

其实,不同于 WSL1,WSL2 本质上是虚拟机,所以 Windows 会自动创建 vhdx 后缀的虚拟磁盘文件作为存储。这个 vhdx 后缀的虚拟磁盘文件特点是可以自动扩容,但是一般不会自动缩容。一旦有很多文件把它“撑大”,即使把这些文件删除它也不会自动“缩小”。所以删除文件后还需要我们手动进行压缩才能释放磁盘空间。

2、解决 2.1 找到要压缩的虚拟磁盘文件

如果你没更改挂载磁盘的位置,那他位置在 C:\Users\\AppData\Local\Docker\wsl\data\ext4.vhdx ,记下路径,后面要用到。

2.2 关闭 Docker Desktop

在任务栏右下角右键单击 Docker Desktop 图标关闭 Docker 桌面,选择退出 Docker 桌面,等一会 Docker 图标没了之后,就证明 Docker 完全关闭了,然后,打开命令提示符:

wsl --list -v

我们就能能够看到,确保两个状态都已停止。

在这里插入图片描述

如果这一步没关闭也没问题,最后所有操作结束后,重启 Docker Desktop 即可。

2.3 压缩虚拟磁盘文件

在 PowerShell 中执行:

# 关闭 WSL2 中的 linux distributions wsl --shutdown # 运行管理计算机的驱动器的 DiskPart 命令 diskpart

会新打开一个叫 DiskPart 的命令窗口,如下图:

在这里插入图片描述 在新打开的 DiskPart 命令窗口中执行:

# 选择虚拟磁盘文件 select vdisk file="就是步骤2.1虚拟磁盘文件的路径" # 压缩文件 compact vdisk # 压缩完毕后卸载磁盘 detach vdisk

上述操作执行完毕,WSL2 删除文件后空出来的磁盘空间就被释放了,可以去虚拟磁盘文件的路径看到 ext4.vhdx 文件大小已经减小。最后打开 Docker Desktop 可以看到原来镜像还在,成功解决问题。

3、偏招

有些同学尝试把 ext4.vhdx 删除直接从根源解决问题,其实这也是可以的

开机后马上切换到 ext4.vhdx 目录下,把 ext4.vhdx 删除,因为如果你启动 docker 后再想去删除,他会告诉你 ext4.vhdx 操作无法完成,因为文件已在System中打开。上个步骤之后,我们会发现打开 Docker Desktop 一直在 starting ,打不开,卸载 Docker Desktop ,再重新安装 Docker Desktop 打开即可解决。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3