And*_* M. 17 docker docker-for-windows docker-desktop
使用Docker Desktop for Windows的 docker windows容器是否具有默认内存限制?我有一个应用程序,当我在容器中运行时崩溃,但当我尝试指定命令--memory 2048mb参数时,docker run它似乎运行正常.至少在以前崩溃的情况下.这给我的印象是存在默认内存限制,但我在文档中找不到它.所以我的问题是内存限制,如果它是在哪里记录?
nes*_*.gp 25
使用 WSL2(如此处所述),您可以在用户主目录中创建一个 .wlsconfig 文件,从 PowerShell 中键入:
notepad "$env:USERPROFILE/.wslconfig"
Run Code Online (Sandbox Code Playgroud)
限制内存的文件内容如下:
[wsl2]
memory=3GB # Limits VM memory in WSL 2 up to 3GB
Run Code Online (Sandbox Code Playgroud)
为了查看您是否正在使用 WSL2,您可以从 docker 界面执行此操作:

dea*_*eep 17
根据Docker for Windows Github问题的谈话(https://github.com/moby/moby/issues/31604),当Docker for Windows在Windows 10下运行时,它实际上正在使用Hyper-V隔离模型(和进程)在Win 10场景中无法访问模型).
在该隔离类型中,您的容器在轻量级VM中运行,该VM具有默认限制,并且为1 Gb.因此,如果你想拥有更多内存,你应该使用-m param.
惊喜!惊喜!
我的主机上有32Gb RAM,但只能看到分配给Windows容器的1Gb RAM:
D:\>systeminfo | findstr "Memory"
Total Physical Memory: 1,023 MB
Available Physical Memory: 634 MB
Virtual Memory: Max Size: 1,023 MB
Virtual Memory: Available: 674 MB
Virtual Memory: In Use: 349 MB
D:\>wmic OS get FreePhysicalMemory /Value
FreePhysicalMemory=648340
D:\>wmic computersystem get TotalPhysicalMemory
TotalPhysicalMemory
1072742400
Run Code Online (Sandbox Code Playgroud)
对以下图片制作的图片有相同的限制:
我认为它来自--isolation=hyperv模式下的Hyper-V层,其中容器是某种轻量级的VM。
您可以通过docker inspect命令检查用于现有容器的隔离模式。
注意:切换到 Linux 容器并使用“设置资源 > 高级”选项只会修改用于运行 Linux 容器的 VM 资源,而不是 Windows 容器。
要调整用于 Windows 容器的内存和 CPU 内核量,您需要在运行映像时使用--memory和 --cpus参数标志。例如:
docker run --name myWinImage --memory 4096m --cpus 2 -it -p ‘4096:7880’ --entrypoint powershell
Run Code Online (Sandbox Code Playgroud)
不要忘记--memory在“4096m”中为标志设置的数字附加一个“m”,否则它将无效。内存标志也有一个简短的版本-m 4096m。
您可以通过打开Powershell终端到正在运行的容器来验证设置标志是否有效:
要检查内存,请运行:
systeminfo | select-string 'Total Physical Memory'`
Run Code Online (Sandbox Code Playgroud)
要检查 CPU,请运行:
Get-WmiObject -class Win32_processor | Format-Table Name,NumberOfCores,NumberOfLogicalProcessors`
Run Code Online (Sandbox Code Playgroud)
这篇文章真的帮我弄明白了:https : //www.sqlservercentral.com/blogs/default-resource-limits-for-windows-vs-linux-containers-in-docker-desktop
对我来说,在使用Docker Desktop的Windows 10上,我无法使用--memory=和--cpus=选项。这是有效的方法:
| 归档时间: |
|
| 查看次数: |
18054 次 |
| 最近记录: |