Is it possible to install docker in Windows without any virtualization support on it?. I need to run docker in a Windows 10 VM in a private cloud (windows containers only). I can’t nor want to install any virtualization software (VMWare, HyperV nor VirtualBox).
No. Docker is heavily build on deep Linux kernel features, which don’t exist on windows. Thats why Docker Desktop uses a VM.
The experimental version of Docker desktop can use WSL2 as backend, which is a somewhat native, non virtualized linux kernel in Windows. This requires the windows insider program tho.
But I suggest that you switch to a linux vm, since docker desktop works under windows but causes a lot of problems.
WSL2 relies on HyperV Microsoft quote “The newest version of WSL uses Hyper-V architecture to enable its virtualization.” https://docs.microsoft.com/en-us/windows/wsl/wsl2-faq .
believe me I dislike Windows, but is not because I love it somuch that I need to have a windows container. My company heavily relies on Windows, that is not going to be matter of hours/days to move our products to a platform independent env.
I just re-read your question and I am 100% certain that you won’t be able to get docker on Windows running without any form of virtualization, since docker is build on linux kernel functionalities, which don’t exist on windows.
Your only hope is to have the docker daemon running on another pc and only connect the cli to the remote computer. This is janky as hell and will probably not even work.
I’ve played with this a little now.
Apart from the fact you might still need Hyper-V to install Docker for Windows (I already had it installed so can’t be sure), you can run it without Hyper-V installed.
You do, however, need virtualisation enabled in the BIOS and the (new?!?) “Virtual Machine Platform” feature enabled.
See this blog post. The main idea is to run Docker in a Virtual Machine and connect to that. Basically deconstructing what Docker does by itself.
You do not need Hyper-V anymore.
Force a Windows upgrade to 19041 or higher:
Install/update WSL to WSL2:
Yeah, this is the right and the only way at the moment. This worked for me. Thanks
Old topic, but want to share my two cents.
This post details how to deploy docker on windows, and does not mention using any hypervisor
Be aware, I tried these instructions and they did not work, dockerd.exe just wont run.
If you must deploy a hypervisor, WSL2 or Hyper-V is a mess to deploy on a windows box that is nested in ESXi is a mess, and a real pain to get up and running. Virtualbox with Docker Toolbox maybe a valuable option here is the github.
I may misunderstand you but that blog bost does mention Hyper-V which “uses the Windows hypervisor”. It just didn’t use the word “hypervisor”
I have actually made it work. It was last year I think and wanted to use Docker on Windows without Hyper-V since I wanted to use VirtualBox to run Linux VMs. I didn’t check this blog post if the instructions are correct but it can be done.
Just a short summary:
1.) Yes, Docker was originaly designed to run Linux containers
2.) Now it is possible to run Docker on Windows or MacOS
3.) To run Linux containers on Windows there must be some kind of virtualization since containers use the kernel of the host operating system. You can’t run Liunx containers on Windows directly. The Docker client just hides the fact that Linux containers are actually inside a vitual machine.
4.) Running Windows containers means you don’t always need virtualization (Hyper-V isolation). You can just use the Windows kernel to run native Windows containers. This is called “process isolation”.
5.) Unfortunately the Windows containers are not as advanced as Linux containers yet. Therefore it is recommended to use the Hyper-V isolation. One of the disadvantages of process isolation is that you can’t use any Windows version inside the container (which is a one of the best things in Linux containers) since the container depends on the Windows version more than Linux containers on the Linux kernel version. Microsoft new that so they actually wrote about it somewhere they would work on it (I couldn’t find it now). Maybe one day they will solve it.
6.) MacOS is different since the Docker and Windows teams worked together to make it work on Windows but it did not happen with Apple yet. I heard this explanation in one of the videos on the Docker youtube channel. This is why we don’t have native MacOS containers despite the fact that MacOS is more similar to Linux than Windows.
Good post @rimelek !
Yes, shortly after I made that post I realized that docker toolbox is no longer supported by docker. Therefore I gave in and deployed Hyper-V with WSL2 (not sure if both are needed or not). Here are the instructions and links I followed to get it all done:
Be aware, this requires WSL2.
Need to adjust the vm to enable Expose hardware virtual assisted virtualization on the VM. Also enable I/O MMU
How to Install Hyper-V Role in Windows 10 VM under VMWare ESXi | Windows OS Hub
I then enabled hyper-v from the Windows features for Windows 10
Then you need to enable WSL2, Follow these steps up to Step5. (Need WSL2, not WSL1)
Manual installation steps for older versions of WSL | Microsoft Docs
Install docker Desktop:
You can now open docker desktop, and run docker cli commands from powershell or cmd.
I know this post is a year old, and I am not answering the question op asked for, but it seems to be the only way supported right now for Docker on Windows.
Telling people what they will not be able to do and sharing some evidence is also valuable
I have just reaized I did use WSL2 to install Docker Desktop since I could not find a way and probably there was not any way to download stable Docker without the Desktop. Some days ago I could find another source so maybe I will try it in the next couple of days but I don’t promise.
I was wondering about the same question.
I’ve noticed Docler on Windows is using QEMU. And to my understanding, QEMU can emulate pretty much anything regardless of the OS or even platform, though it might not be the most performant compared to hypervisor virtualization.
So I wondered if we still can run Docker in Windows with a QEMU emulator (even though it might be slower), and if not, why?
If you now the parameters for qemu to attach a disk image for the root filesystem and install an operating system from an “iso” virtual disk, you will have an emulated linux where you can install Docker.
I have never used QEMU on Windows. Only on Linux with KVM, but I used UTM on MacOS to install a Linux OS and install Docker. UTM is based on QEMU. It worked but the performance will depend on your machine.