Installing Docker on Windows Server 2016 without Desktop Experience

Hi,

First thanks for anyone who helps. I am trying to install Docker CE Edge downloaded from https://store.docker.com/editions/community/docker-ce-desktop-windows into Windows Server 2016. The exact version should be 17.06.0-ce-rc2

If I install it to Windows Server 2016 (Desktop Experience), everything works fine. I tried to install it on Windows Server 2016 without Desktop Experience, I get the error:

PS C:\Users\Administrator> & '.\Downloads\Docker for Windows Installer.exe'
PS C:\Users\Administrator> [16:27:29.790] [InstallHandler] No d4w installation found
[16:27:29.806] [InstallHandler] Using embedded package
[16:27:29.962] [InstallWorkflow] Using package: res:d4w
[16:27:29.977] [InstallWorkflow] Downloading
[16:27:32.771] [InstallWorkflow] Extracting manifect
[16:27:32.862] [InstallWorkflow] Manifest extraction failed
Exception type: System.TypeLoadException, Exception message: Requested Windows Runtime type 'Windows.Data.Json.JsonValue' is not registered., StackTrace:
   at System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD)
   at Windows.Data.Json.JsonValue.Parse(String input)
   at LightweightInstaller.Manifest.FromJson(String json)
   at LightweightInstaller.ExtractManifestStep.<DoAsync__26.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at LightweightInstaller.InstallWorkflow.<HandleD4WPPackage>d__19.MoveNext()
[16:27:32.864] [InstallWorkflow] Installation failed
Exception type: System.TypeLoadException, Exception message: Requested Windows Runtime type 'Windows.Data.Json.JsonValue' not registered., StackTrace:
   at System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD)
   at Windows.Data.Json.JsonValue.Parse(String input)
   at LightweightInstaller.Manifest.FromJson(String json)
   at LightweightInstaller.ExtractManifestStep.<DoAsync__26.MoveNext
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at LightweightInstaller.InstallWorkflow.<HandleD4WPPackage>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at LightweightInstaller.InstallWorkflow.<ProcessAsync>d__18.MoveNext()

It seems like Windows Server 2016 without Desktop Experience doesn’t have Windows Runtime registered to handle Windows.Data.Json.JsonValue. Any help would be greatly appreciated.

You cant using Docker CE on Windows Server with Windows Experience features. Since it use GUI to configure the docker itself.

Must use Docker EE for Windows Server

Sorry, do you mean that I can’t use Docker CE on Windows Server without Desktop Experience?

I use Docker CE because I tried Docker EE but can’t seems to get Linux containers to run on Docker EE.

Yes. This is the known limitation Docker for Windows Server. But as you can see, Linux cant run Windows container as well

1 Like

Use the Docker EE installation as described in https://store.docker.com/editions/enterprise/docker-ee-server-windows, this works on Windows Server Core Edition.
Docker EE 17.06 will be available in a few weeks.

If you want to try out CE Edge features in advance, still use the installation steps as above and then replace dockerd.exe + docker.exe eg. with this script https://github.com/StefanScherer/docker-windows-box/blob/master/scripts/update-docker-ce.ps1

Once Docker EE is available just install the 17.06 EE with Install-Package -Name docker -ProviderName DockerMsftProvider -Verbose -Update and you are back on EE.

1 Like

Wondering if anyone knows of any updates on this. 17.06 is stable and documentation references it, but I’m not seeing a way to use it with Windows Server 2016.

Will this make it possible to run Linux and Windows containers side-by-side on Windows Server Core? Having a hard time figuring out if Hyper-V is actually working though the feature is installed. The normal installation of Docker CE (stable, using chocolatey) complains that it is unable to configure Hyper-V.

Windows Server 2019 Preview 1803 is begging for this, but I’m hitting the same challenge.

This looks promissing: https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/configure-docker-daemon

So is there any way at all to use Linux containers (via Hyper-V) on Windows Server 2016 Core Server with just the basic GUI? Nano Server even better.

The EE version installed via the command line using “Install-Module” and “Install-Package” does not install DockerCli.exe, which has a “-SwitchDaemon” parameter to do this. Ironically the only installer option that does provide this command line utility requires a GUI.

Is there some other way to get DockerCli?

Docker cli is installed with Docker-EE. What do you mean you don’t have it? Can you execute docker ps once docker-EE is installed? If you are then you have docker CLI.

You’re mixing up two very different things: there’s a binary called “DockerCLI.exe” in the CE version of Docker. See: CLI to switch between linux and windows images