17

What is the way to run Linux docker container on Windows Server 2016? With Docker for Windows it easy to do in Windows 10. Is the only way to install Docker Toolbox and ignore the build-in containers feature all together?

Natalia
  • 554
  • 1
  • 6
  • 16

5 Answers5

8

It is possible to use Linux containers on W2016. It's a bit hacky though. User "Algore" described it here but I've copied it into this answer, of course.

  • Download "Docker for Windows": https://docs.docker.com/docker-for-windows/

  • Install "Docker for Windows" on Windows 10 Pro.

  • Copy C:\Program Files\Docker from the Windows 10 machine to C:\Program Files on your Server 2016 box.

  • On the W2016 box run install-windowsfeature hyper-v,containers

  • Copy these registry entries to a file and import them on your Server 2016 box (reg import):

---START---
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Docker Inc.]

[HKEY_LOCAL_MACHINE\SOFTWARE\Docker Inc.\Docker]

[HKEY_LOCAL_MACHINE\SOFTWARE\Docker Inc.\Docker\1.0]
"AppPath"="\"C:\Program Files\Docker\Docker\Docker for Windows.exe\""
"BinPath"="\"C:\Program Files\Docker\Docker\resources\bin\""

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\DockerService]
"EventMessageFile"=hex(2):43,00,3a,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,\ 00,73,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,2e,00,\ 4e,00,45,00,54,00,5c,00,46,00,72,00,61,00,6d,00,65,00,77,00,6f,00,72,00,6b,\ 00,36,00,34,00,5c,00,76,00,34,00,2e,00,30,00,2e,00,33,00,30,00,33,00,31,00,\ 39,00,5c,00,45,00,76,00,65,00,6e,00,74,00,4c,00,6f,00,67,00,4d,00,65,00,73,\ 00,73,00,61,00,67,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\com.docker.service] "Type"=dword:00000010 "Start"=dword:00000002 "ErrorControl"=dword:00000000 "ImagePath"=hex(2):22,00,43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,\ 6d,00,20,00,46,00,69,00,6c,00,65,00,73,00,5c,00,44,00,6f,00,63,00,6b,00,65,\ 00,72,00,5c,00,44,00,6f,00,63,00,6b,00,65,00,72,00,5c,00,63,00,6f,00,6d,00,\ 2e,00,64,00,6f,00,63,00,6b,00,65,00,72,00,2e,00,73,00,65,00,72,00,76,00,69,\ 00,63,00,65,00,22,00,00,00
"DisplayName"="Docker for Windows Service"
"ObjectName"="LocalSystem"
"Description"="Run Docker for Windows backend service"
---END---

You can add an entry to currentversion\run or a scheduled job if you want docker for windows.exe to start up automatically.

  • Restart the computer and run the PowerShell script C:\Program Files\Docker\Docker\Resources\mobylinuxvm.ps1 -Create

Look into this ps1 file and notice that you can set various options. Please refer to these websites:

https://docker-saigon.github.io/post/Docker-Beta/
https://jpetazzo.github.io/2013/10/16/configure-docker-bridge-network/

  • Make sure the docker service com.docker.service (start-service com.docker.service) is running before you start C:\Program Files\Docker\Docker for Windows.exe

If you are running on server core and don't have the tray icon, click "change privacy settings" when the notification comes up after it starts to get to settings (or modify the json in programdata)

If you run into issues when trying things and rebuilding, check out the C:\Program Files\Docker\Docker\Resources\forceremovedocker.ps1 file for locations to delete settings such as in C:\programdata. I would advise against running the script as it deletes all docker related things. Just use pieces of it.

Boggin
  • 3,251
  • 3
  • 33
  • 48
  • 1
    I followed the steps and am able to run docker for windows, however for some reason the bin path is not being picked up and I can't run "docker" or "docker-compose" in cmd. The commands are not recognised, unless I explicitly navigate to the folder. Any ideas? – chvndb Apr 13 '17 at 20:35
  • 1
    The CLI tools are a separate install. Docker Engine [releases](https://github.com/docker/docker/releases) and Docker Compose [releases](https://github.com/docker/compose/releases) are available on GitHub. – Boggin Apr 14 '17 at 07:42
  • 1
    What do you mean, separate install? The CLI tools are right there as part of the Docker for Windons installation, under "C:\Program Files\Docker\Docker\resources\bin\". In the end I just added the bin folder to my $PATH environment variable. Works fine now. – chvndb Apr 27 '17 at 08:14
  • Now Docker Desktop use WSL and not worked on Windows Server 2016 (no file mobylinuxvm.ps1, no iso-file) – rominokun Oct 22 '20 at 06:31
5

According to this from Stefan Scherer it is possible to run Linux containers on Server 2016. The instructions are:

Create a Linux Docker machine in Hyper-V

If you want to try out multi architecture you also use docker-machine to create a Linux Docker Engine running in Hyper-V. I have prepared a script that will set up everything as there are some known issues.

C:\vagrant\scripts\create-hyperv-linux-docker-machine.ps1

This PowerShell script creates a Docker machine and updates Docker Engine to the latest so that the Windows Docker client is able to communicate with the Linux Docker Engine.

Use the Linux Docker machine

Open a PowerShell terminal as an administrator and select the Linux Docker machine with

docker-machine env --shell powershell | iex

Now run your first busybox container with

docker run -it busybox uname -a
Brad Larson
  • 170,088
  • 45
  • 397
  • 571
Dave
  • 131
  • 2
  • 9
4

Unfortunately, right now it is not possible to easily install the "Docker for Windows" tool. This installer provides a thin VM called MobyLinux which allows running of Linux containers on Windows Server 2016. You can find a hacky install attempt (which I have not tried) on the Docker forums.

For reference there is a good discussion about what is going on behind the scenes with "Docker for Windows".

William Denman
  • 3,046
  • 32
  • 34
1

The below worked on Windows Server 2016 build 14393.693 (January 2017) without hacky workarounds.

It may work on higher/lower builds but I tried to replicate on a recently updated version of Windows Server 2016 and it failed spectacularly! Feels like this hole had to be patched!

Download Docker Community Edition 2.0.0.3 2019-02-15

Link: https://download.docker.com/win/stable/31259/Docker%20for%20Windows%20Installer.exe

Page with all versions: https://docs.docker.com/docker-for-windows/release-notes/

Simply download/copy the file to the Windows Server 2016 machine and run it.

It can also run offline for air-gapped systems.

Uncheck the "Use Windows containers" during setup. Unchecked by default.

You will get a message after installing saying that windows so and so is deprecated. Click OK. enter image description here enter image description here Log out and log back in.

If you hadn't installed Hyper-V it'll prompt you to do it automatically. Allow it, let it finish and restart. You're good to go now. You may need to restart again if it fails to switch to Linux.

I've tested this by running several Linux containers, it works fine. If I'm missing something do share for the benefit of others. The downside is you cannot update to a later version of Docker.

Waleed Al Harthi
  • 705
  • 9
  • 25
0

Simply download and install Docker on Windows Server 2016 https://www.docker.com/docker-windows
If you run Windows Server 2016 as a VM using Hyper-V make sure to check this MS doc https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/nested-virtualization

Serge V.
  • 3,377
  • 3
  • 20
  • 28