You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Docker容器sandbox.vhdx持续膨胀,寻求排查方法

Windows Docker容器sandbox.vhdx磁盘膨胀排查方法
  • 检查VHDX的稀疏属性与实际占用

    • 用PowerShell查看VHDX的逻辑大小和实际磁盘占用:
      Get-VHD -Path "C:\ProgramData\Docker\containers\<容器ID>\sandbox.vhdx" | Select-Object Path, Size, FileSize
      
    • 区分Size(逻辑分配空间)和FileSize(实际磁盘占用),若FileSize持续增长,说明磁盘确实被占用而非仅逻辑空间分配。
  • 排查容器内未释放的文件句柄

    • 容器内应用删除文件但未关闭句柄会导致VHDX无法回收空间,在容器内执行:
      Get-Process | ForEach-Object { Get-ProcessHandle -Id $_.Id } | Where-Object { $_.FileName -like "*deleted*" }
      
    • 或在宿主机用Process Monitor过滤容器对应进程(如wincat.exe或容器进程的宿主机PID),查找已删除但仍被占用的文件。
  • 检查Docker的镜像/容器层空间占用

    • 执行命令查看容器层空间详情:
      docker system df -v
      
    • 用docker inspect <容器ID>查看容器的Mounts和GraphDriver信息,确认是否有未清理的挂载卷或匿名卷。
  • 排查容器内页面文件膨胀

    • 检查容器内页面文件大小:
      Get-WmiObject -Class Win32_PageFileUsage
      
    • 若页面文件持续增长,可通过容器启动参数--memory-swap <限制值>限制交换空间,或禁用页面文件。
  • 检查宿主机卷影副本/快照

    • 宿主机卷影副本可能锁定VHDX导致无法回收空间,执行命令查看快照:
      vssadmin list shadows
      
    • 清理针对Docker存储目录的不必要快照。
  • 触发Docker存储驱动的空间回收

    • 强制清理无用资源:
      docker system prune -af
      
    • 手动优化VHDX回收空间:
      Optimize-VHD -Path "C:\ProgramData\Docker\containers\<容器ID>\sandbox.vhdx" -Mode Full
      

内容的提问来源于stack exchange,提问作者Jan Biddle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:35:11