Posts

How to Install Docker and Run Docker Containers on Windows Server 2019

Initially, the inception of Docker containerization started out with Linux as its base platform. However, over the years, Docker and Microsoft have continuously grown their partnership, creating a conveniently consistent interface for building, shipping, and running applications without the usual dependence hurdles associated with virtual machines.

Though a huge number of enterprises are already using Docker on Windows platforms, there has been a number of subtle functionality disparities between Windows and Linux containers. However, Windows Server 2019 (1809 build) has successfully addressed most of the inconsistencies between Docker containers in Linux and Windows environments.

Requirements for Installation of Docker on Windows

Docker containers are powered by a Docker engine. Though initially designed for Linux, extensive work has been done to allow Docker containers to run on Windows and macOS environments.

To run Docker containers on a Windows platform, one prerequisite is the installation of a Windows server. You can do this in a physical server machine, on a cloud environment running in Azure, or an on-premise virtual machine.

Install the Hyper-V feature on your Windows server 2019

There are two distinct modes to run Decker containers on Windows platforms: Process isolation and Hyper-V isolation. With the Process isolation mode, the Docker containers share the OS kernel with the host platform, hence they are lightweight and identical to Linux system Docker containers.

On the other hand, the running of Docker containers in the Hyper-V mode is confined to a special nominal virtual machine. This enables improved compatibility and secure kernel-level. To run Docker containers in this mode, you must first enable Hyper-V in the host operating system.

The default operation mode for Docker installation on a Windows server is the operation mode (enabling Hyper-V is optional). However, it’s a prerequisite to enable the Hyper-V isolation mode if you need to run Linux containers on a Windows Server interface.

The OS build is another crucial determinant on the need for Hyper-V mode as Windows containers should be of the same build version as the container host OS’s version. Still, Windows container images with a lower build version than the container host OS can run with Hyper-V isolation.

To install Hyper-V on Windows Server 2019, run the PowerShell as Administrator and run the commands below:

Enable-WindowsOptionalFeature –Online -FeatureName Microsoft-Hyper-V –All -NoRestart

Install-WindowsFeature RSAT-Hyper-V-Tools -IncludeAllSubFeature

Next, restart your Windows Server VM.

Prerequisites for the container host

You must enable virtualization in the hosting Windows server platform to utilize Hyper-V isolation in your containers: enable hardware virtualization for a container host running on hardware and nested virtualization in the base interface for a container host running on a cloud space or Hyper-V.

Running Docker Containers on Windows Server 2019

Before running multiple isolated applications using Windows Containers, you need to activate (enable) the containers feature and install Docker on your Windows Server 2019. Here’s the process:

  1. Enable the containers feature in Windows Server 2019.

Run PowerShell as an Administrator and run this command:

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

This command will install the Docker-Microsoft Package Management Provider from the PowerShell Gallery.

When prompted to install and import NuGet provider, type Y and hit ENTER

  1. Install Docker on your Windows Server 2019

After installing the Containers feature on Windows Server 2019, it’s time to install the latest versions of Docker Engine and Docker Client. Run this command in your PowerShell session:

Install-Package -Name docker -ProviderName DockerMsftProvider

Accept the installation by selecting “Yes”, “Y” or “A” to Agree to all the installation requests.

After the completion of this installation, reboot your computer.

Restart-Computer –Force

You can check your installed Docker version via the PowerShell command:

Get-Package -Name Docker -ProviderName DockerMsftProvider


You can also confirm the installed Docker version using the docker –version command:

docker –version

You can opt to upgrade anytime by running the commands below on PowerShell:

Install-Package -Name Docker -ProviderName DockerMsftProvider -Update -Force

Then start the docker service.

Start-Service Docker

  1. Launch (Run) Docker Containers on Windows Server 2019

Run the following commands on PowerShell:

Start-Service Docker

After starting the Docker Engine service, proceed to download the pre-created .NET sample image on the Docker Hub registry:

docker pull microsoft/dotnet-samples:dotnetapp-nanoserver-1809

After the download, you can deploy a simple Docker container that runs the .Net ‘Hello World’ application:

docker run microsoft/dotnet-samples:dotnetapp-nanoserver-1809

After running the command, an ASCII image will be printed to the shell accompanied by the “Hello” message.

Running Linux Containers on your Window Server 2019

By default, Docker on Windows only runs Windows containers. To launch Linux containers on Windows Server, use the Docker Enterprise Edition Preview that comes with a full LinuxKit system to run Docker Linux containers.

  1. First, uninstall the already installed Docker CE.

Uninstall-Package -Name docker -ProviderName DockerMSFTProvider

  1. Enable Nested Virtualization in case you’re running Docker Containers on a Linux Virtual Machine running on Hyper-V.

Get-VM WinContainerHost | Set-VMProcessor -ExposeVirtualizationExtensions $true

NOTE: WinContainerHost is the name of your virtual machine

  1. Install the Module Docker Provider

Install-Module DockerProvider

Install-Package Docker -ProviderName DockerProvider -RequiredVersion preview

A restart will be required after this operation

  1. Enable LinuxKit system to run Linux containers

[Environment]::SetEnvironmentVariable(“LCOW_SUPPORTED”, “1”, “Machine”)

  1. Restart the Docker Service after the change above and restart the Service Docker

Restart-Service docker

To switch back to running Windows containers, execute the following command in PowerShell:

[Environment]::SetEnvironmentVariable(“LCOW_SUPPORTED”, “$null”, “Machine”)

You have finally installed and configured Docker your Windows Server machine to run both Linux and Windows containers. We hope this guide was insightful.