Windows container runs with -m 3g but fails to start with -m 4g

Hello.

I am running a Windows 10 in VMWare virtual machine with nested virtualization enabled.
Physical host machine has 32 Gb RAM. And guest Windows 10 is given 10 Gb RAM.
At least 8 Gb is available to guest Windows 10 while the issue happens.

OS: Windows 10 Pro
Edition: Professional
Id: 1703
Build: 15063
BuildLabName: 15063.0.amd64fre.rs2_release.170317-1834

docker version output:

Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.24)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      windows/amd64
 Experimental: true

The issue:
Command
docker run -ti -m 3g microsoft/nanoserver cmd
works completely fine.

But
docker run -ti -m 4g microsoft/nanoserver cmd
cannot start and says

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: container ad5daea5af71e433efbe4ced2
7e3553c009be78f2cd2ea5ee9cf63798fdc890e encountered an error during CreateContainer: failure in a Windows system call: A
 connection could not be established with the Virtual Machine hosting the Container. (0xc0370108) extra info: {"SystemTy
pe":"Container","Name":"ad5daea5af71e433efbe4ced27e3553c009be78f2cd2ea5ee9cf63798fdc890e","Owner":"docker","IsDummy":fal
se,"IgnoreFlushesDuringBoot":true,"LayerFolderPath":"C:\\ProgramData\\Docker\\windowsfilter\\ad5daea5af71e433efbe4ced27e
3553c009be78f2cd2ea5ee9cf63798fdc890e","Layers":[{"ID":"05ed9e7f-50fc-5547-b50f-0b3bd04b7c46","Path":"C:\\ProgramData\\D
ocker\\windowsfilter\\87ff91487e924ad07948b9d75921a6e5ff836000a0973fb3a9f155ba1c6f9c56"},{"ID":"2023745b-c852-5a0b-a1c9-
d6e583a23714","Path":"C:\\ProgramData\\Docker\\windowsfilter\\aede6a6a41c139f7cf2648a52b9bac0d938da809ca5cc66c111cab4cac
9cb450"}],"MemoryMaximumInMB":4096,"HostName":"ad5daea5af71","MappedDirectories":[],"SandboxPath":"C:\\ProgramData\\Dock
er\\windowsfilter","HvPartition":true,"EndpointList":["3eac4fd9-2ac4-4575-bfbd-a2e46b5aba70"],"HvRuntime":{"ImagePath":"
C:\\ProgramData\\Docker\\windowsfilter\\87ff91487e924ad07948b9d75921a6e5ff836000a0973fb3a9f155ba1c6f9c56\\UtilityVM"},"S
ervicing":false,"AllowUnqualifiedDNSQuery":true}.

I do know that in Windows 10 only hyperv isolation is possible, so I was thinking maybe it is some HyperV engine setting that I should tweak to enable more than 3Gb memory to be possible for a container which runs in hyperv?

All containers with -m 3g run completely fine.

Also tried reset to factory default, same result.

I just tested this on a couple of systems in house and while we’re still investigating, it seems that this is likely a resource issue.
I can create containers using the - 4g version, but only as long as I have enough available memory.
When I tried to create one that would put me past the amount of Ram available - I got either timeout, or failed to connect errors similar to yours. The -m option is actually the Minimum server memory, so it looks like it is actually pre-allocating the memory and keeping it reserved until the containers are stopped. So if I run docker run -ti -m 4g microsoft/nanoserver cmd 4 times, it will use 16gb of ram.

Please use a docker PS command to see what other containers are running. Try stopping or removing one or two of the containers, then trying the command again. It worked for me here on my local machine.

Thanks,
Jason

Hello thank you very much for your response.

I was able to obtain a physical machine with 32 Gb RAM with Windows 10 with latest updates and all.
Clean install of docker, and I get same result - does not work with -m 4g.

Right after command start Committed size in task manager goes up by 4 Gb, and vmmem process with 4 Gb commit size also appears, but I still get same error.

All other containers are not running at the moment of command and even more so - I deleted all the containers before executing the command.

Also I cannot confirm the resource issue as I have 28 Gb Available RAM and Commited is 6/37 Gb before the command starts.

Can I provide any more info to help you out in investigating?
Diagnostic upload id is: E5BB9482-3B4D-4744-8BD2-05932B2311E4/2017-05-23_23-00-27
I dont know if you have access to it or not.

Update: Adding docker version output:

Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.24)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      windows/amd64
 Experimental: true

And OS data:

OS: Windows 10 Pro
Edition: Professional
Id: 1703
Build: 15063
BuildLabName: 15063.0.amd64fre.rs2_release.170317-1834

Created and issue on Github:

So can anyone try this command and actually confirm the problem? I am trying to understand is this only my machine/environment or not.

I can replicate this on a Win 10 Pro machine with 32GB.

However, I am running docker images on my Win10 Pro machine with 64 GB RAM and I can run it with -6G without a problem

That is interesting, maybe that can help devs resolve this bug, although if it wasn’t resolved in 11 months…

Any follow up on this issue ?

for example docker run -e ACCEPT_EULA=‘Y’ -m 6GB microsoft/bcsandbox:nl