I have a lot of experience with Docker on Linux, but none with Docker on Windows. On the docker web site I read this:
The Docker for Windows is designed to configure Docker development environments on Windows 10 and on Windows Server 2016. You can develop both Docker Linux containers and Docker Windows containers with Docker for Windows. To run Docker Windows containers in production, see instructions for installing Docker EE on Windows Server 2016. To run Docker Linux containers in production, see instructions for installing Docker on Linux.
Does this mean I need 2 different OSs? One for building containers and another for running them? If I have a machine running Windows Server 2016 and I both build and run containers there?
I’ve tried on both, and found Docker on Windows 10 to be quite unreliable, especially when host is a VM running on VmWare ESXi. At the end of the day it’s a user OS, not server OS.
Here is my PowerShell script for installing Dockere on Windows 2016 (taken from official documentation):
Install-WindowsFeature Containers -Restart
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider -Force
Start-Service docker
Start-Sleep 10
Restart-Service docker # this helps with further configuring of the nat network
No Docker can run Linux containers natively on Windows.
Docker on Windows 10 runs Linux containers actually inside a Hyper-V VM with Moby Linux.
For dev \ workstation purposes that’s fine, though I’d probably run it on Vagrant with VirtualBox.
For real production use, you’d rather need a Linux Docker host for Linux containers.
Another option that might work for you - Windows Subsystem for Linux. It’s really easy to use, has Ubuntu by default, although I’ve never tried it with Docker, so not sure if it will work at all.
Windows Subsystem for Linux is not usable in case you were thinking of installing a docker server on it.
You are able to install the client and server, but the server doesn’t work and i had to remove the WSL since i was unable to remove docker and unable to fetch new updates via apt-get (was around may/june?).
It is just an abstraction layer, which catches linux calls and routes them through to the appropriate windows dll (AFAICR).
The WSL is actually a subfolder somewhere in your %AppData%, where the whole folder structure of the linux subsystem is located.
You say Linux Containers can run in Windows Server 2016. Which version of Windows Server exactly and Which Docker, Docker EE or Docker for Windows? I’d like to see an article or documentation where it is stated to run Linux containers via Docker EE on the Long-Term Servicing Channel Windows version, which is Windows Server 2016 (version 1607) OS BUILD 14393.
Until I see how Linux containers is run natively on this version, I am to say you are incorrect. As far as I know, Linux containers only work on Docker on Windows (which is not production supported). And as for Docker EE it is only supported for Windows Server version 1709 and upwards via LCOW (not MobyVM which Docker for Windows uses).