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

WSL2环境下Docker容器--memory参数不生效问题求助

WSL2下Docker容器--memory参数不生效的原因及修复方法

问题原因

WSL2环境中,Docker运行在WSL2虚拟机内部,容器的内存上限受限于WSL2虚拟机本身的内存配额。你的主机内存为32GB,WSL2默认会分配主机内存的一半(约16GB)作为虚拟机内存,所以即便给容器设置24GB内存限制,实际会被WSL2的16GB上限截断,最终显示15.59GB左右的限制。

你修改.wslconfig后无变化,大概率是未正确重启WSL2虚拟机,或是文件格式、位置存在错误。

修复步骤

1. 确保.wslconfig配置正确

  • 文件必须放在Windows用户目录下,路径为 %UserProfile%\.wslconfig(即C:\Users\你的用户名\.wslconfig),没有则新建。
  • 配置格式要准确,内存值需大于容器设置的24GB,示例:
    [wsl2]
    memory=28GB  # 必须大于容器的24GB限制
    swap=0        # 可按需设置交换空间,0表示关闭
    
    注意:键值对间不要有多余空格,注释用#开头。

2. 完全重启WSL2与Docker

  • 关闭所有WSL2终端窗口和Docker Desktop。
  • 打开Windows命令提示符(CMD)或PowerShell,执行命令彻底关闭WSL2虚拟机:
    wsl --shutdown
    
  • 等待1-2分钟,重新启动Docker Desktop和WSL2终端。
  • 验证WSL2内存是否生效:进入WSL2终端,执行free -h,查看输出的total内存是否接近28GB。

3. 检查Docker Desktop的资源配置(若使用Docker Desktop)

如果通过Docker Desktop配合WSL2使用,需确认Docker的资源设置:

  • 打开Docker Desktop → 设置 → 资源 → 高级
  • 将内存设置调整为大于24GB(比如26GB),保存后Docker会自动重启。

4. 重新创建容器并验证

再次执行容器启动命令:

docker run -it --memory="24g" --mount src="$(pwd)",target=/splicepath_pc,type=bind splicepath

运行docker stats查看容器的内存限制,此时应显示为24GB。

注意事项

  • WSL2虚拟机的内存配额是其中所有进程(含Docker容器)的总上限,分配时要留足WSL2自身运行的内存。
  • 若同时修改了.wslconfig和Docker Desktop的资源设置,Docker Desktop的设置会优先生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:12:31