Docker窗口容器内存限制

docker的Windows容器有默认的内存限制? 我有一个崩溃的应用程序,当我在容器中运行它,但是当我试图指定 – --memory 2048mb参数docker run命令它似乎运行良好。 至less在之前崩溃的情况下。 这给我的印象是有默认的内存限制,但我不能在文档中find它。 所以我的问题是有内存限制,如果它是在哪里logging?

根据有关Docker for Windows Github问题的讨论( https://github.com/moby/moby/issues/31604 ),当Docker for Windows在Windows 10下运行时,它实际上使用了hyperv隔离模型(而过程模型是Win 10情况下无法访问)。

在这种隔离types中,你的容器运行在一个轻量级的虚拟机中,它有默认的限制,它是1Gb。 所以如果你想有更多的内存,你应该使用-m参数。

我想这可能是因为你有太多的死容器。 也许试试docker rm $(docker ps -a -q)删除所有退出的容器然后重试运行你想要的容器。

没有默认限制。 logging在这里

惊喜! 惊喜!

我的主机上有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 

由以下方面对图像的限制相同:

  • 微软/ windowsservercore
  • 微软/ nanoserver

我们最近有一个非常相似的问题和问题,因此在Windows上做了一些Docker内存的实验:

看来这很大程度上取决于你的configuration。 如果你运行docker容器,我们称之为hyper-v模式,内存限制似乎是512mb左右。 您可以使用docker run的“-m”选项扩展给定的内存。 分配2 GB没有问题。

不幸的是,它的Windows服务器容器完全不同。 那里的起始内存限制是1GB,你可以用“-m”选项减less它。 我们没有find增加这些容器内存的方法。

你如何看待你的模式/隔离级别:

 docker info -f "{{ .Isolation }}" 

hyperv – 超v模式; 进程是windows服务器

一些额外的注意事项:它很难find一个命令,输出容器中的可用内存。 我们已经创造了我们自己的性能testing结果可靠。