How to run Docker Linux Container on Windows Server 1709

As mentioned Microsoft released the final version of Windows Server 1709 in the last week. Windows Server 1709 brings a couple of new improvements, especially in the container space. Microsoft and Docker are working on bringing Linux Container support to Windows Server, so you can now run Windows and Linux Container at the same time on a Windows Server Container Host running Windows Server 1709 or Windows 10 with the Fall Creators Update (1709).

In this post I want to show you how you setup up a Container Host to run Windows and Linux Containers at the same time using Docker.

Create Container Host Virtual Machine

Enable Nested Virtualization

If you run Docker on a physical server you can skip this step. If you want to run Docker Containers using Linux inside a Virtual Machine running on Hyper-V you should enable Nested Virtualization for the Container Host Virtual Machine. You can do this by running the following command:

if you want to do this on a Hyper-V Server in Azure, check out this post: How to setup Nested Virtualization in Microsoft Azure

Install Docker Enterprise Edition Preview on Windows Server 1709

First you have to install Docker Enterprise Edition Preview on your Windows Server 1709 container host. You can install the Docker EE preview using PowerShell package management, using the following commands:

As mentioned this is a preview version of Docker EE which enables a bunch of new features, to run Docker in production environments please use Docker EE 17.06.

Enable Docker Linux Containers on Windows

The preview Docker EE package includes a full LinuxKit system (13MB) for use when running Docker Linux containers. To enable this use the following command:

to disable it again use the following:

Run Linux Docker Container on Windows Server

Docker Ubuntu Container on Windows Server

Now you are able to run Linux Containers on Windows Server 1709.

for fun you can also run Nyancat!

Docker Nyan Cat on Windows Server

Things are still in preview, so don’t expect to work 100% 🙂