Docker Desktop Windows Server



March 2, 2020 by Matt Hernandez, @fiveisprime

  1. Docker Desktop Windows Server 2016 Datacenter
  2. Docker Desktop Windows Server 2012
  3. Docker Desktop Windows Server 2016

Last June, the Docker team announced that they will be investing in getting Docker running with the Windows Subsystem for Linux (WSL). All of this is made possible with the recent changes to the architecture of WSL to run within a lightweight virtual machine (VM), which we talked about in an earlier blog post about WSL 2. Since this announcement, the Docker team has released a Technical Preview of Docker that includes support for running with WSL 2.

This article explains how the Docker Desktop technical preview works as well as how to use the Docker extension with the technical preview.

All Windows Server 2016 and later versions come with Docker Engine - Enterprise. Additionally, developers can leverage Docker natively with Windows 10 via Docker Desktop. Docker Windows containers work the same way as it does on Linux: same Docker CLI, API, image format and content distribution services. Additional benefits. To get started, you will need to be on Windows Insider Preview build 19040 or higher and install the Docker Desktop Edge 2.2.2.0. What’s in Docker Desktop for Windows Home? Docker Desktop for WSL 2 Windows Home is a full version of Docker Desktop for Linux container development.

Host operating system: Windows Server or Windows 10. Hypervisor: Windows 10 must run Hyper-V to support containers; Windows Server, as shown in the table, has more flexibility. Docker engine: Docker is a third-party application for managing containers. Docker Enterprise runs on Windows Server; Docker Desktop for Windows runs in Windows 10. Docker Desktop provides an installation wizard, a management UI, and several other utilities for improving deployment. Docker Desktop is supported on Windows 10 and Mac. Docker Desktop comes with the Docker Engine CE or EE depending on the product tier we choose. Docker targets its enterprise product suite toward production environments. Presumably, these are docker-desktop-data and docker-desktop respectively. In theory, these WSL2 instances can be re-located to an alternate drive to free disk space as per this post; that is the standard method for exporting, unregistering, and re-importing an instance from a new location.

How it works

This new Docker architecture works a lot like Visual Studio Code's WSL remote development support in that the Docker CLI running on the host machine executes commands within the Docker Integration Package, which runs on the remote WSL VM.

Image credit: Docker Engineering

2019

DockerD runs directly within WSL so there's no need for the Hyper-V VM and all Linux containers run within the Linux userspace on Windows for improved performance and compatibility.

Getting set up

First some prerequisites:

Docker Desktop Windows Server 2016 Datacenter

  • Install Windows 10 Insider Preview build 18975 (Slow) or later for WSL 2.
  • Install Ubuntu from the Microsoft store.
  • Enable WSL 2 by following this guide.
  • Install the Remote - WSL extension for VS Code.
  • Install the Docker WSL 2 Technical Preview.

Once installed, Docker will recognize that you have WSL installed and prompt to enable WSL integration. You want to Enable WSL integration for this tutorial.

This option will allow you to access Docker Desktop via the Docker CLI directly from within your Linux distro.

If you have multiple Linux distros, make sure you only have WSL integration turned on for the correct one in your Docker settings:

With that configured, all commands will execute in the Linux context - this includes Docker commands run from PowerShell so running something like docker run mongo… will start a Linux container within the WSL VM.

Docker Desktop Windows Server

Running the docker ps command over in WSL, you'll see the container as expected. Notice that the container ID matches.

Using VS Code

With this set up and running, you can install the VS Code Docker extension and access your containers. If you're already running WSL 2 and the Remote - WSL extension, this will help you get Docker integrated into your WSL workflow rather than switching contexts when you need containers. And because the Docker CLI's context is set to use DockerD in WSL, the extension will work with your containers regardless of whether you opened VS Code using the Remote - WSL extension.

Notice how in the screenshot below, I'm connected and working in WSL and still building/running containers without changing from my preferred environment (zsh in Ubuntu).

Theme: Noctis Sereno

I've personally noticed a vast improvement in container execution times using this configuration and each part of my typical development workflow remains the same. I'm also using the Remote - Containers extension within WSL for testing specific environments without setting things up directly on my machine.

We want your feedback

Keep in mind that you're using prerelease software and, while the Windows Insiders Slow ring is very stable, you may run into some issues. If you do find something that isn't working as expected, please open an issue via the Feedback tool in Windows. Any direct Docker issues or feedback can be logged in the Docker for Windows repo.

Docker Desktop Windows Server 2012

Happy Coding!

Docker Desktop Windows Server 2016

Matt Hernandez, VS Code Program Manager @fiveisprime