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

  • 1、起因及原因
  • 2、解决
    • 2.1 找到要压缩的虚拟磁盘文件
    • 2.2 关闭 Docker Desktop
    • 2.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 打开即可解决。

Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题相关推荐

  1. 删除文件后,磁盘空间没有释放的处理记录

    问题说明:IDC里的一台服务器的/分区使用率爆满了!已达到100%!经查看发现有个文件过大(80G),于是在跟有关同事确认后rm -f果断删除该文件.但是发现删除该文件后,/分区的磁盘空间压根没有释放 ...

  2. Linux下rm删除文件后,磁盘容量没有释放

    文章目录 0 现象 1 原因 2 解决 0 现象 使用rm删除文件后,内存并没有释放. 1 原因 rm命令只是把链接解除(unlink),进程仍然可以读取已删除的文件,所以并不释放磁盘空间. 2 解决 ...

  3. MYSQL Delete删除数据后物理磁盘空间未减少解决

    起因: 数据表中保存日志信息比较多,一个表站用好几个G的空间,想清理掉三个月以前的数据,但清理后发现物理磁盘站用空间并没有减少. 原因是使用delete删除的时候,mysql并没有把数据文件删除,而是 ...

  4. linux目录删除不释放空间,删除linux文件后,磁盘空间未释放的解决办法

    今天删除了一个ORACLE的表空间文件,示按标准从ORACLE内进行删除,只是把物理文件给 rm -rf 了, 结果看目录的大小减少了,但看分区的信息时,空间还是占了那么多. 后来在网上查了,解决方法 ...

  5. Linux删除大文件后磁盘空间未释放问题

    前言 工作中经常遇到Linux系统磁盘空间不足,但是删除后较大的日志文件后,发现磁盘空间仍没有被释放,有点摸不着头脑,今天博主带大家解决这个问题. 思路 1.工作发现磁盘空间不足: 2.找到占用磁盘空 ...

  6. 为什么文件删除了但磁盘空间没有释放?

    1.案例现象 这天,监控系统发来一条告警消息,内容说某台服务器根目录磁盘占用空间达到阈值,超过百分之八十了 登上服务器,df -Th 看一下,发现磁盘空间确实不够用了 [root@localhost ...

  7. 有时候Mac下删除文件磁盘空间无法释放

    http://vela.diandian.com/post/2012-09-15/40038173334 首先呢,不知道是不是我这里才遇到:删除文件(之后清理掉Trash)或者用rm -rf直接命令行 ...

  8. CentOS7使用docker 启动容器后 , 宿主机连接访问不到容器的端口

    CentOS7使用docker 启动容器后 , 宿主机连接访问不到容器的端口 注意第一种方法是在网上找的 , 我并没有执行成功 , 但是他分析的很不错, 可以参考第二种方法 首先需要明确docker的 ...

  9. linux rm 不释放_Linux解决rm 删除大文件后 磁盘空间无法释放的问题

    Linux解决rm 删除大文件后 磁盘空间无法释放的问题 在Linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会 ...

最新文章

  1. Retrofit2.0
  2. python学习-注释、语法、整数、浮点数初步接触
  3. qt qss设置字体大小_Qt编写自定义控件70-扁平化flatui
  4. HTML5权威指南 11.通信API
  5. media player的显示模式 winform
  6. 计算机应用属于工程与工程经济类,计算机及信息技术和电子技术应用哪种属于工程类或工程经济类专业?...
  7. VB中KeyCode常数用法
  8. 【学习笔记】堆的定义及其建立、排序等基本操作的实现
  9. 光立方,动手搭——原理简述
  10. 怎么制作合法有效的电子签名?
  11. CAD绘制填充并设置填充透明度
  12. Linux安装必须建立的三个分区
  13. Java 使用 throw 抛出异常
  14. 一款轻量的JVM监控工具——Jvmm
  15. VS Code做项目的笔记
  16. python插入excel文件数据(递增+随机)
  17. 人机大战硝烟再起:阿尔法狗升级了 柯洁拼了
  18. SAP MB51选择界面配置
  19. Node.js Express博客项目实战 之 前台页面数据的显示
  20. 人人贷网的数据爬取(利用python包selenium)

热门文章

  1. mysql 网络远程登录_mysql实现远程登录
  2. 漫画面试回答kafka为何如此之快
  3. java如何使用aspose向word文件中插入表格、固定值
  4. android设置padding单位,android – 什么是paddingStart和paddingEnd?
  5. (46.4)【WAF绕过】基于工具的使用绕过WAF、WAFNinja、burpsuite、sqlmap、Fuzz/爆破、wafw00f
  6. 微信开发-关于分享朋友朋友圈以及录音功能
  7. 2021年加密货币犯罪报告
  8. SCAU SQL 数据库 期末复习
  9. Java案例———超市购物系统(类的封装)
  10. Linxu 查看磁盘空间命令