Can I run Docker in a Virtual Machine?

shkim picture shkim · Sep 27, 2016 · Viewed 91k times · Source

I tried to run Docker on a virtual machine.

Host : MacBook 
VM : Parallels Windows 7

And error occurs:

enter image description here

Is it possible?

Answer

peterh - Reinstate Monica picture peterh - Reinstate Monica · Jan 27, 2017

If the VM is a Linux, you can do this without any problem - on Linux, the Docker is essentially a well-worked chroot. Thus, the Linux docker is not virtualization.

In the case of Windows, it is not so easy. Windows Docker internally uses Hyper-V to emulate the containers. Which means that you can only run, if you can use nested virtualization:

  1. On your host machine runs a Windows VM
  2. Inside your Windows VM, runs a HyperV
  3. HyperV is managed by the docker installed on your virtual Windows.

I tried qemu/kvm, virtualbox and vmware player. I configured them deeply and strongly, I've hacked them, I did every possible to do. Only the last worked (VMWare).

There are significant speed costs, but it may be useful for development on Linux, and then trial-test on Windows configurations.

You will need a lot of ram. At least 16G. 32G is better. A relative useful configuration would be:

  • 32GB physical RAM for the physical host
  • 12GB virtual RAM for the Windows VM running on it
  • 8GB virtual RAM inside the Windows VM for the HyperV Linux host.

Sometimes it will be a little bit buggy, but only your HyperV will crash out, your virtual Win, or your host machine won't. It is okay for testing a docker container on a Windows machine, what you've developed on a Linux. Don't create mission critical servers on this way. :-)