我最近更新了我的 Docker 环境,以便在 Windows 上的
WSL 2
上运行。
为了在以前的版本中设置容器的内存分配限制,我可以在 Docker Desktop GUI 中的
Settings->Resources->Advanced->Preferences
下选择调整内存和 CPU 分配。
我认为从现在开始我应该通过我的 Linux 发行版运行所有内容,所以这是我找到的解决方案:
docker run -d -p 8081:80 --memory="256m" container_name
我不想每次运行容器时都设置一个标志。有没有办法永久设置内存分配?
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 中的高级设置配置。
您必须限制 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 月更新