Docker won't start on Windows: Not Enough memory to start docker
Asked Answered
K

19

54

I am trying to get started with Docker on Windows. My machine has 4GB of RAM and a 1.9GHz - 2.5GHz Intel i5 processor, running Windows 10 Pro x64. I know these aren't powerful specs, but I would have thought I should be able to run Docker?

However, having downloaded Docker, I get the error message:

Not Enough memory to start docker

I have seen various forum posts and github issues about this and followed all the advice I can see, such as modifying the settings in Docker, I tried these:

enter image description here

They also mentioned changing the settings of the Hyper-V VM however, this seems to be deleted and recreated with the Docker specified settings on every attempted launch. I tried 2048MB, 1792MB, 1536MB, 1280MB and 1024MB of RAM, all of which failed.

What else can I do? Surely I can run docker in some form on my machine? NB: I have closed all non-essential background apps. There doesn't seem to be many other suggestions for what seems to be a fairly common issue, where the given solutions don't work?

Korella answered 2/4, 2017 at 15:27 Comment(5)
Your second screenshot shows that your VM is allocated 64MB of RAM. That's very small.Freedwoman
@Freedwoman Yes, I tried that to ensure there was enough system resources for it, but it didn't work. Should I try something else?Korella
Which Windows build are you using? We changed how Hyper-V allocates memory for VMs recently -- updating may help. BlogCrapshooter
I am having the same issue and I don't even have the "Advanced" menu item in my Docker settings. How can I show this option?Tokyo
@Tokyo I think you get the Advanced tab only if you are using Linux Containers.Methuselah
M
112

I have also encountered the same problem. Tried everything from giving dynamic memory to enabling and disabling Hyper V and many more. But with all that, I got no success.

Then I tried these steps for

Docker won't start on Windows: Not Enough memory to start docker:

  1. From System Tray menu, right click on Docker icon

  2. Select Switch to Windows containers...

  3. Restart the system.

There you go after restarting your docker status should be showing as: Docker is running

PS: Switching back to Linux container should work now after switching to Windows Containers for most of the users as said by rfay.


Updates (May 01, 2019)

Despite of the above methods if you're still unable to start docker on your Windows Machine, try with the following things:

  • Download RAMMap from Microsoft's Official website
  • Open the application and select Empty menu
  • From the sub-menu list select the first option Empty Working Sets
  • Now refresh it by pressing F5

Now try running docker and I believe this should work.

RAMMap Application

Mucronate answered 22/8, 2017 at 11:27 Comment(7)
This worked for me, after trying everything I could think of.. ta!Trifolium
So switching to windows containers means that you can't run Linux containers any more, which is what most people are running. However, when I had this problem, switching to Windows containers and then switching back to Linux containers did the job.Resinate
Hmm, it worked for me as I was running Linux containers first but I'm curious as to why is this happening.Allcot
This worked flawlessly and so well. Should be marked as a right answerConverse
@Converse If you find any answers on stackoverflow useful then do not forget to upvote the answer. This means a lot to person answering the question.Mucronate
this worked for me. This was really driving me nuts.Dumdum
i wish you very long and happy lifeStacte
S
15

I solved this issue by right clicking on the docker tray icon chose settings and then tapped on the "Advanced" section.

Then I lowered the memory from the default 2048 to 1536 and works like charm. Another option is try to switch to Windows Containers then Restart the Machine and switch back to Linux Containers.

Below is my docker settings with Advanced tab open. Note the Memory is 1536 and My laptop has 4GB Ram.

enter image description here

Also the virtual machine "MobyLinuxVM" is running as shown below;

enter image description here

I hope this helps someone one day even if was a late answer :)

Severini answered 28/5, 2019 at 6:17 Comment(0)
C
6

if you are on window and got this error, Go to Search box

#1 type Hyper-V Manager 
 Click on it,
 a window like attached screenshot open,

enter image description here

#2 Select  MobilinuxVM(normally same name if running windows docker)
#3 Right click and open - Setting 
    2 The second window will open(setting for MobiLinux) i.e to the screenshot.
#4 Go to Memory Tab in left Pane.
#5 click on a dynamic checkbox and set minimum value to some lower amount say 512, and max value to the desired one,
#6 apply 
now it will start running as well after few minutes take the amount it required as well.
Councilman answered 23/4, 2018 at 9:18 Comment(1)
Doesn't work because Docker just overrides the settings next time it bootsYamen
H
5

It is not the problem of RAM. It is the allocated disk memory to docker.
It means there is not enough space for docker to create an image or any other docker related operations.

Open the docker settings >> advanced >> disk image max size

Increase this size and apply the changes.

It will restart automatically and then you're good to go.

enter image description here

Hasan answered 14/4, 2019 at 4:21 Comment(0)
A
4

In Settings, I did a reset to factory defaults. And restarted the laptop. It Worked for me

Andreaandreana answered 6/6, 2018 at 12:37 Comment(1)
There was windows 10 update. System was updated correctly. But docker failed to start. This memory issue happens. After doing reset to factory defaults, it worked to me. ThanksMarishamariska
P
3

Posting what worked for me:

  1. Open Resources settings in docker
  2. Set memory to lowest setting, in my case 1024MB
  3. Open Task manager, verify that I've at least the memory I specified above free
  4. Restart docker, switch to linux containers

In my case this worked because I was using almost all of my RAM with VScode and firefox, so closed them and tried and it worked

Puto answered 30/4, 2020 at 18:14 Comment(0)
V
2

Have you enabled NUMA spanning in your HyperV settings? if not enable it i bet that will solve your issue.

By default, Windows Server enables NUMA spanning, which provides the most flexibility as virtual machines (VMs) can access and use memory in any NUMA node. But it may result in lower performance compared to forcing VMs to use memory on the same NUMA node as the processor cores.

By disabling NUMA spanning, you ensure that VMs use memory and processor cores in the same NUMA node, giving the best performance. This should only be changed once, if, as an administrator, you feel comfortable with NUMA and the implications of disabling and also if you have some additional management suite that can help ensure best configuration.

To configure NUMA spanning, open the Hyper-V Settings and select the NUMA Spanning option and disable it, I am sure, it will get solved; I struggled with the issue for a week and resolved it by disabling NUMA.

I am sure this would be marked as resolved by disabling NUMA in Hyper-V Manager.

Volar answered 5/3, 2019 at 8:47 Comment(1)
It doesn't work for me. The specs of my host machine is almost identical to the original post in this thread. I have been trying nearly all of the proposed fixes reported here but to no avail.Pediform
D
2

I lowered my memory and swap to the lowest it would go as well as the disk image size to 32gb and it finally started without switching to windows containers or having to reboot.

Dreher answered 26/3, 2019 at 18:55 Comment(2)
after hours this did it. simple and elegant solutionThird
Worked, it seems higher uses of RAM in system by default inhibiting docker to start. Lowering the bar given it enough space to start, other way could be freeing RAM consumption.Introspection
G
2

Issue resolved after just restarting the PC -_-. Dont know what is that.

Gummosis answered 14/11, 2019 at 5:36 Comment(0)
R
2

To fix this issue, you need (but firstly see Note #4 below):

  1. Back up the DockerDesktopVM virtual drive
  2. To find this path, open Hyper-V manager and Open setting of DockerDesktopVM, and find path. Usually it exists in vm-data folder in DockerDesktop ProgramData folder.
  3. Switch to Windows containers via tray icon
  4. Usually this file is locked. To unlock it, for me works, turning of all services with name Hyper-V and with name docker: Docker and Docker Desctop,HV Host Service,Hyper-V Host Compute Service,Hyper-V Virtual Machine Management,Docker Desktop Service. Also, Docker Desctop UI should be turned off via tray icon right click on it.
  5. Back up the file DockerDesktopVM !!!
  6. When the file DockerDesktopVM was back up, so all folder vm-data with this file maybe deleted (be aware and careful this file contains all your containers and images.)
  7. Starts all services back and run docker desktop UI.
  8. Switch back to Linux containers
  9. At this moment you will see the settings in DockerDesktop UI and new file was created in vm-data folder with name DockerDesktopVM
  10. Stop the all services again and replace the new file DockerDesktopVM with your old file which was backed up at the step 5.
  11. Start all services and Docker Desktop UI.

Note #1: most of difficulties ware with locked file DockerDesktopVM. Reboot is not required during manipulations with locked file. Updated: This file maybe acidentially attached as a disk to the host system. So, you need diskmgmt.msc on the host server. The disk was listed there, right click and choose detach. It prompts for confirmation that you have the correct file. At that point, process explorer confirms that the file is no longer open by pid 4 (nt kernel & system) and I am able to work freely with the .vhdx file. Updated 2: Or you need to run command net stop vmms. Manipulate with file and start the vmms back with command net stop vmms (origin https://community.spiceworks.com/topic/603713-solved-vhdx-can-t-be-deleted) Update 3: Anyway the vhdx file maybe locked due to VM is still running or hang. To determine this you can open vhdx file permission and see in the list of user one user with strange name similar to GUID - this is NT VIRTUAL MACHINE{GUID}. So, this is a virtual user under which your VM's process is running in windows. Then you can find the process vmwp.exe under this user in Taskmanager -> Details. Another way, you can find this process from Process Explorer latest version in Find Handler or DLL section by a search keyword 'vhdx'. You need to kill this process! After that, the vhdx file will be unlocked.

Note #2: If you backed up your DockerDesktopVM.vhdx file, so you can probably reset Docker to default for instance after step 7, or just reinstall the Docker Desktop

Note #3: Sometimes DockerDesktopVM.vhdx will be unlocked when it was deleted from Hyper-V Mager UI

Note #4: If your docker was able to start with wrong settings some how, but now it does not able to start. So, probably, you can try to avoid all manipulations above and just close all applications which consume a lot of memory, like chrome. And, try start docker again.

Note #5: Sometime, due to permissions, you can only delete file or copy it but can't rename.

But the core idea run Docker with fresh DockerDesktopVM file and replace it with the old one after when settings UI will be unlocked.

Ruthieruthless answered 21/7, 2022 at 17:32 Comment(0)
Z
1

I have also the same problem. Maybe you have other virtual machine in Hyper-v, other Virtual machin need memory too. please stop all other Hyper-v Virtual machine and test again. for me worked My Hyper-v Manager

enter image description here

Zig answered 28/2, 2018 at 10:23 Comment(1)
Thanks @Dmitry for EditZig
G
1

When I experienced this problem I modified the PowerShell script MobyLinux.ps1 found in the resources folder on the Docker install in C:\Program Files\Docker\Docker\resources. Essentially I forced the values for the $CPUs to 2 and the $Memory to 512, which worked for my dev box's limited resources!

enter image description here

At this point when Docker drops the MobyLinuxVM instance in Hyper-V and re-creates it from the PowerShell script it now uses my values: enter image description here

This time the VM remains up and stable, and Docker successfully switches from the Windows Containers to the Linux Containers:

enter image description here

Hope this helps someone.

Giliana answered 13/3, 2019 at 9:23 Comment(0)
D
1

So to begin with I normally start off with opening Visual Studio Code then my terminal and finally Docker Desktop WSL2. The problem being is that Visual Studio Code is a chunky memory hogger and initially requires a lot of memory to run. Especially if you used the integrated terminal, multiple tabs, and ultimately multiple windows.

When I open Docker Desktop last it gives me not enough resources error. After a little messing and testing, I found out that Docker initially needs to load first because it needs to obtain a certain amount of memory for your containers and images to run. So starting Docker Desktop manually, not on windows startup, then your other programs and tools should, I am saying should as everyone's environment and problems are different from mine and I am not expecting them to be the same, work fine.

So here are the steps:

  1. On opening your computer, mine is Windows 10 using WSL2 with Home, do not immediately have Docker open on startup. Instead, run the program manually by double-clicking the icon or searching in your start menu and clicking on Docker Desktop.
  2. Next, we then want to open Windows Visual Studio Code and other programs after that.
  3. Before running any commands, as I do run them through node js with specific package.json defined commands, check docker desktop as sometimes your containers and images are already running and therefore shouldn't need to run any commands to bring them up again.

If all this fails try going into your settings and allocating specific memory. Check your task manager processes and see what is taking up all of your resources. I hope this helps. Again everyone's environment is not the same so do not expect similar results as I have had. This SHOULD work doesn't mean it will. Read the documentation as well as it does help with identifying problems faster.

Disfigure answered 13/11, 2020 at 8:24 Comment(0)
E
0

Just follow the step:

  1. Go to Troubleshoot in the Docker dashboard.
  2. Click on Clean/Purge data.
  3. Select all options and press delete.

It takes a few minutes. (that's work for me)

Elasticize answered 2/7, 2020 at 14:23 Comment(0)
B
0

I had the same problem. In my case I had another VM running on Hyper-V that was consuming all the resources. Even after system restart the VM was always active. I opened Hyper-V Administrator and deactivated the problematic VM. Then I could start Docker properly.

Biedermeier answered 30/7, 2020 at 7:46 Comment(0)
R
0

My Windows 10 Laptop has 8 GB of RAM. I also use virtual memory. When i start my OS and immediately run some RAM hungry applications, I can't start Docker until i stop most of the applications.

Yet: https://mcmap.net/q/145707/-docker-won-39-t-start-on-windows-not-enough-memory-to-start-docker helped me as well.

Renfro answered 1/10, 2020 at 9:16 Comment(0)
N
0

This may happen because the ram is not free at the time you starting docker

I had opened 20 tabs of the browser, that leads to no free ram so I closed all the tabs refresh the computer several times, and tried restarting once again and it works for me

Neper answered 22/10, 2020 at 9:44 Comment(0)
P
0

I have faced same issue: Docker out of memory in windows.

I have solved issue, by following three steps.

1. Quit Docker Desktop by clicking mouse right button. 2. Now run Docker Desktop as Administrator. 3. Now restart your windows system.

Now Docker will work properly. This solution has worked for me. :)

Pyrrolidine answered 5/12, 2020 at 0:36 Comment(0)
P
-1

Problem: Installed Docker Desktop. Got Out of Memory error upon starting with linux instance.

Details: OS: Windows 10 Professional Host: Lenovo ThinkPad Carbon X1, 4GB RAM Docker Desktop: Version 2.1.0.1 (37199) Docker advanced settings:

  • CPUs: 2
  • Memory: 2048MB (this is the maximum)
  • Swap: 2048MB
  • Disk Image Size: 59.6GB (4MB used)

Hyper-V settings for DockerDesktopVM:

  • Settings > Memory > RAM: 2048MB (tried to increase to 4096; still doesn't work)
  • Settings > Memory > Enable Dynamic Memory (checked/un-checked; both doesn't work)

Under variations of the above settings, Docker Desktop gives this error when starting/ re-starting:

Not enough memory to start Docker Desktop You are trying to start Docker Desktop but you don't have enough memory. Free some memory or change your settings.

The problem resolutions reported in the following links, e.g. starting with Windows instance, then switching back to Linux, don't work for me, regardless of how much memory I allocate via Hyper-V or Docker settings.

It is utterly frustrating because apparently people are reporting being able to start with linux instances on host machines with 4GB of RAM. So I wonder what I am doing wrong.

Resources researched/ tried:

Questions:

  1. Can I even run Docker Desktop with linux instance on my host machine?
  2. If (1) is yes, then what settings will allow me to do this?
Pediform answered 7/10, 2019 at 7:1 Comment(1)
You should not put question as an answer.Musgrove

© 2022 - 2025 — McMap. All rights reserved.