码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题


    【已解决】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
    
    • 1

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

    在这里插入图片描述

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

    2.3 压缩虚拟磁盘文件

    在 PowerShell 中执行:

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

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

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

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

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

    3、偏招

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

    • 开机后马上切换到 ext4.vhdx 目录下,把 ext4.vhdx 删除,因为如果你启动 docker 后再想去删除,他会告诉你 ext4.vhdx 操作无法完成,因为文件已在System中打开。
    • 上个步骤之后,我们会发现打开 Docker Desktop 一直在 starting ,打不开,卸载 Docker Desktop ,再重新安装 Docker Desktop 打开即可解决。
  • 相关阅读:
    【分布式系统】分布式选举之Bully算法
    交换机之trunk access hybrid 以及vlan深入理解
    HTML基础
    网络编程 day01 (linux ) 网络字节序 与 主机字节序的转化函数 ,与相关的知识 。
    C++ 多态与虚拟:Class 语法语义
    【图像隐藏】基于小波变换+SURF、RANSAC、LT码、CRC码多种算法实现图像隐藏(抗多种攻击)matlab源码
    WebDriver库:实现对音频文件的自动下载与保存
    Word格式处理控件Aspose.Words for .NET教程——使用DocumentBuilder将字段插入文档
    【软件工程】【第一章概述】d2
    计算机毕业设计 SSM家具销售系统 家具店管理系统 家具商城系统Java
  • 原文地址:https://blog.csdn.net/a6661314/article/details/128029017
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号