Windows 中迁移到 WSL 2 后对 docker 容器的内存分配

问题描述 投票:0回答:2

我最近更新了我的 Docker 环境,以便在 Windows 上的

WSL 2
上运行。

为了在以前的版本中设置容器的内存分配限制,我可以在 Docker Desktop GUI 中的

Settings->Resources->Advanced->Preferences
下选择调整内存和 CPU 分配。

WSL 2 集成后,我找不到该选项。

我认为从现在开始我应该通过我的 Linux 发行版运行所有内容,所以这是我找到的解决方案:

docker run -d -p 8081:80 --memory="256m" container_name

我不想每次运行容器时都设置一个标志。有没有办法永久设置内存分配?

docker docker-for-windows ubuntu-20.04 wsl-2
2个回答
92
投票

WSL2 集成删除了内存和 CPU 设置。但是,从 Windows Build 18945 开始,有一种解决方法可以限制 WSL2 内存使用。

创建用于配置 WSL2 设置的

%UserProfile%\.wslconfig
文件:

[wsl2]
memory=6GB  # Any size you feel like (must be an integer!)
swap=0
localhostForwarding=true

在管理员 Powershell

(或重新启动)
中运行 Get-Service LxssManager | Restart-Service 并验证任务管理器中的
vmmem
使用情况是否下降。

有关完整的设置列表,请访问 WSL 中的高级设置配置


11
投票

您必须限制 WSL 内存使用...

步骤1

添加/编辑此文件

%UserProfile%\.wslconfig
并附加这两行:

[wsl2]
memory=8GB

第2步

在 WSL 获取新设置后立即完全关闭:

$ wsl --shutdown

请在此处查看 Microsoft 的其他信息:WSL 中的高级设置配置


实验解决方案(2023 年 9 月更新)

2023 年 9 月的更新添加了对新的选择加入实验功能的支持,包括新的 autoMemoryReclaim,它可以通过回收缓存内存来减少使用 WSL VM 时的内存。如果你想尝试一下...

将此行替换为步骤 1(上文)中的行:

[experimental] 
autoMemoryReclaim=gradual

请在此处查看此设置和更多实验性设置:适用于 Linux 的 Windows 子系统 2023 年 9 月更新

© www.soinside.com 2019 - 2024. All rights reserved.