How to setup docker on windows server 2019 datacenter to run Linux container?

After installation of docker desktop getting the below error.

System.InvalidOperationException: job failed with message: ‘DockerDesktopVM’ failed to start. (Virtual machine ID FEFFEFFE-FEF7-FEF8-FEF7-0F4FEFFEFFEF)

The Virtual Machine Management Service failed to start the virtual machine ‘DockerDesktopVM’ because one of the Hyper-V components is not running (Virtual machine ID FEFFEFFE-FEF7-FEF8-FEF7-0F4FEFFEFFEF). at Docker.Backend.HyperVInfrastructure.HandleUpdatedJob(CIMConcreteJob updatedJob) in C:\workspaces\main-merge\src\github.com\docker\pinata\win\src\Docker.Backend\HyperV\HyperVInfrastructure.cs:line 780 at Docker.Backend.HyperVInfrastructure.d__40.MoveNext() in C:\workspaces\main-merge\src\github.com\docker\pinata\win\src\Docker.Backend\HyperV\HyperVInfrastructure.cs:line 714 — End of stack trace from previous location where exception was thrown — at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Docker.Backend.HyperVInfrastructure.d__32.MoveNext() in C:\workspaces\main-merge\src\github.com\docker\pinata\win\src\Docker.Backend\HyperV\HyperVInfrastructure.cs:line 554 — End of stack trace from previous location where exception was thrown — at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Docker.Backend.HyperV.d__6.MoveNext() in C:\workspaces\main-merge\src\github.com\docker\pinata\win\src\Docker.Backend\HyperV\HyperV.cs:line 106 — End of stack trace from previous location where exception was thrown — at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Docker.Backend.HttpAPI.HyperVController.d__7.MoveNext() in C:\workspaces\main-merge\src\github.com\docker\pinata\win\src\Docker.Backend\HttpAPI\HyperVController.cs:line 49 — End of stack trace from previous location where exception was thrown — at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Threading.Tasks.TaskHelpersExtensions.d__1`1.MoveNext() — End of stack trace from previous location where exception was thrown — at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ApiControllerActionInvoker.d__1.MoveNext() — End of stack trace from previous location where exception was thrown — at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext() — End of stack trace from previous location where exception was thrown — at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext()

Is WSL2 enabled on you machine? Docker needs that to run linux containers. Refer to this Install Docker Desktop on Windows | Docker Documentation

Docker Desktop does not support Windows Server.
WSL2 is not available for any Windows Server version below 2022.

There used to be LCOW (Linux containers on Windows), but it s deprecated and not maintained anymore.

I see two possible solutions:

  • run a Linux VM (Ubunte/Debian/CentOS) and use docker-ce to run Linux container inside the vm
  • as Mirantis owns the forder Docker Enterprise offering, you could get in touch with them and ask which of their products allows running Linux Container on Windows, then get a subscription for it. If there is a product, it still needs to run a Linux VM, as Linux container require a Linux kernel.
1 Like