服务器 > 服务器 > 云虚拟主机

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

40人参与 2025-02-15 云虚拟主机

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. 常见的 docker 清理命令

在 docker 中,可以使用以下命令来清理未使用的资源,包括未使用的镜像、容器和网络:

docker system prune -a

这将删除所有停止的容器、未使用的网络和未使用的镜像。请注意,这个命令会删除所有未使用的资源,因此请确保你不再需要这些资源。

以上就是windows的docker删除容器后wsl2磁盘空间不释放的问题的解决方法的详细内容,更多关于docker wsl2磁盘空间不释放的资料请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

通过Docker运行AnythingLLM的方法

02-15

设置docker的定时关闭和启动方式

02-15

docker system df命令详解

02-15

如何使用docker compose安装gitlab

02-15

CentOS修改docker镜像存储位置并进行数据迁移的操作方法

02-15

Docker 镜像加速访问的几种方法

02-15

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论