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

 更新时间:2024年12月27日 10:46:50   作者:HBLOG  
很多同学拉取镜像使用一段时间后发现 C 盘快满了,把之前用过的镜像和容器删除,发现 WSL 挂载目录的虚拟磁盘大小没有变化,非常的奇怪,所以本文介绍了Windows的docker删除容器后WSL2磁盘空间不释放的问题的解决方法,需要的朋友可以参考下

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磁盘空间不释放的资料请关注脚本之家其它相关文章!

相关文章

  • 如何使用Docker Desktop部署GitLab

    如何使用Docker Desktop部署GitLab

    本文介绍了如何使用Docker Desktop在Windows系统上部署GitLab,包括环境准备、安装Docker、配置GitLab镜像、容器配置等步骤,感兴趣的朋友一起看看吧
    2025-03-03
  • docker容器里安装ssh的具体步骤

    docker容器里安装ssh的具体步骤

    本篇文章主要介绍了docker容器里安装ssh的具体步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Docker如何进入启动容器

    Docker如何进入启动容器

    本篇文章主要介绍了Docker如何进入启动容器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • docker查看日志命令的实现步骤

    docker查看日志命令的实现步骤

    Docker可以使用 docker logs 命令来查看容器的日志,本文主要介绍了docker查看日志命令的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 常用的Docker命令及示例汇总分析

    常用的Docker命令及示例汇总分析

    这篇文章主要介绍了常用的Docker命令及示例的汇总分析,附含源码示例分析,有需要的朋友可以借鉴参考下,希望可以对广大读者有所帮助
    2021-09-09
  • docker简单部署Django项目实例

    docker简单部署Django项目实例

    使用Docker部署Django项目需配置Nginx和uWSGI,注意端口冲突并禁用宿主机原有服务,通过自定义bridge网络实现容器间通信,挂载静态文件目录,利用脚本简化部署流程,确保容器与宿主机网络隔离且可互相访问
    2025-09-09
  • Dockerfile常用命令的使用简介

    Dockerfile常用命令的使用简介

    这篇文章主要介绍了Dockerfile常用命令的使用简介,帮助大家更好的理解和学习使用Docker,感兴趣的朋友可以了解下
    2021-04-04
  • Docker启动容器后自动关闭问题解决

    Docker启动容器后自动关闭问题解决

    在使用Docker创建并启动mysql容器时,发现mysql容器并没有启动而是自动关闭了,本文主要介绍了Docker启动容器后自动关闭问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • 利用Docker Compose部署多容器LNMP环境的实战步骤

    利用Docker Compose部署多容器LNMP环境的实战步骤

    本次实战通过Docker Compose成功构建了完整的LNMP(Nginx + MySQL + PHP-FPM)开发环境,通过自定义PHP-FPM镜像安装MySQL扩展,配置 Nginx 反向代理 PHP 请求,本文介绍的非常详细,感兴趣的朋友一起看看吧
    2025-12-12
  • Docker访问容器中的Spring Boot日志的几种方法

    Docker访问容器中的Spring Boot日志的几种方法

    在本文中,我们将演示如何在Docker容器中访问Spring Boot日志,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04

最新评论