Docker Windows桌面端 释放占用空间

Docker Windows桌面端,删除容器后,占用空间没有释放

问题

Docker Windows桌面端,删除容器后,占用空间没有释放

原因

ext4.vhdx磁盘空间会根据加载的数据自动增长,但是无法自动回收。

解决

注:Docker的ext4.vhdx可能在以下路径:C:\Users\YOURNAME\AppData\Local\Docker\wsl\data

  1. 退出Docker Windows桌面端
  2. PowerShell运行:wsl –shutdown
  3. 【可选用diskpart】
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # PowerShell运行以下命令
    # 进入diskpart
    diskpart
    # 选择虚拟机文件
    select vdisk file="【填写ext4.vhdx绝对路径】"
    attach vdisk readonly
    # 回收虚拟机文件无用空间
    compact vdisk
    # 断开虚拟机文件
    detach vdisk
    # 退出diskpart
    exit
    【可选用optimize-vhd,需要已安装Hyper-V】
    1
    2
    # PowerShell运行以下命令
    optimize-vhd -Path 【填写ext4.vhdx绝对路径】 -Mode full

参考

diskpart

  1. https://zhuanlan.zhihu.com/p/437983382
  2. https://blog.csdn.net/Caoyang_He/article/details/120507716

optimize-vhd

  1. https://learn.microsoft.com/zh-hk/powershell/module/hyper-v/optimize-vhd?view=windowsserver2022-ps&viewFallbackFrom=win10-ps
  2. https://www.cnblogs.com/cccy0/p/16918476.html
  3. https://www.hanselman.com/blog/shrink-your-wsl2-virtual-disks-and-docker-images-and-reclaim-disk-space
  4. https://zhuanlan.zhihu.com/p/538805830