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

Windows Docker进程隔离模式下内存分配不生效,设置50GB仅使用12.64GB

问题核心原因排查

你遇到的12.64GB上限完全匹配Windows客户端系统(Win10/Win11)运行process隔离Windows容器的默认内存限制:客户端系统默认将Windows容器的内存上限限制为宿主机物理内存的20%,如果你的宿主机物理内存为64GB,20%恰好接近12.8GB,和你观测的数值一致。

先澄清你配置中的误区

你当前daemon.json中配置的dm.basesize=40G是devicemapper存储驱动的可写层大小配置,和容器内存限制完全无关,无法解决你的问题。

逐一排查修复方案

  • 第一步:确认代码中containerMemory参数的单位是否正确
    Docker.DotNet中HostConfig.Memory的单位为字节,如果你要分配50GB内存,需要将containerMemory赋值为50L * 1024 * 1024 * 1024 = 53687091200,如果直接传入50或者单位换算错误,会触发默认内存限制。
  • 第二步:解除Windows客户端系统的默认容器内存上限
    微软对非Server版Windows系统的Windows容器做了全局资源限制,需要修改注册表解除:
    1. 打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hcimon\Parameters
    2. 新建DWORD(32位)值,名称为DisableRootMemoryLimit,数值设置为1
    3. 重启宿主机生效
  • 第三步:配置Docker daemon的默认容器内存上限(可选)
    如果你需要给所有process隔离的Windows容器统一默认内存,可以在daemon.json中添加如下配置,重启Docker服务生效:
    {
      "default-ulimits": {
        "memlock": {
          "Name": "memlock",
          "Hard": 53687091200,
          "Soft": 53687091200
        }
      }
    }
    
  • 第四步:验证配置生效
    容器创建完成后执行命令docker inspect 你的容器ID,查看返回结果中HostConfig.Memory字段值是否等于你设置的字节数,同时执行docker stats查看容器的内存上限是否符合预期。

内容的提问来源于stack exchange,提问作者Rafał Developer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:36:04