Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run Docker Desktop with Windows Containers on Amazon AWS EC2 Windows (or is this not possible)?

I have a DESKTOP machine running Windows 10 running Windows 10, Microsoft 365, Docker Desktop running in Windows Containers mode.

I have an Amazon EC2 machine running Windows Server 2019 and have installed Microsoft 365 on there too and access via RDP.

Essentially what I'd like to is create an EC2 machine which allows me to run Microsoft 365 AND Docker Desktop running in Windows Containers mode.

I've tried creating AWS EC2 instance and installing Docker for Desktop but I get lots of cryptic errors. (see below).

I tried using this AMI from Microsoft with Hyper-V built in https://aws.amazon.com/marketplace/server/procurement?productId=d94e0325-6111-4c69-8c29-87e784a6d0aa

[Or should I be using Docker Enterprise for this?]

[Or is it not possible to get a Windows machine which will run Docker Windows Containers on AWS at all?]

[Or do I need to choose a specific type of machine size [t4.large or whatever] - I have experienced on Microsoft Azure before that running Docker Desktop was possible only on machines of a certain spec, which allowed "virtualization on top of virtualization"]

System.InvalidOperationException:
job failed with message: 'DockerDesktopVM' failed to start. (Virtual machine ID 677B7F36-8A44-42CE-AD29-7884DDCE164C)

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 677B7F36-8A44-42CE-AD29-7884DDCE164C).
   at Docker.Backend.HyperVInfrastructure.HandleUpdatedJob(CIMConcreteJob updatedJob) in C:\workspaces\PR-15633\src\github.com\docker\pinata\win\src\Docker.Backend\HyperV\HyperVInfrastructure.cs:line 762
   at Docker.Backend.HyperVInfrastructure.<HandleMaybeAsyncJob>d__38.MoveNext() in C:\workspaces\PR-15633\src\github.com\docker\pinata\win\src\Docker.Backend\HyperV\HyperVInfrastructure.cs:line 696
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Docker.Backend.HyperVInfrastructure.<StartVMAsync>d__30.MoveNext() in C:\workspaces\PR-15633\src\github.com\docker\pinata\win\src\Docker.Backend\HyperV\HyperVInfrastructure.cs:line 544
--- 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.<StartAsync>d__6.MoveNext() in C:\workspaces\PR-15633\src\github.com\docker\pinata\win\src\Docker.Backend\HyperV\HyperV.cs:line 99
--- 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.<StartAsync>d__7.MoveNext() in C:\workspaces\PR-15633\src\github.com\docker\pinata\win\src\Docker.Backend\HttpAPI\HyperVController.cs:line 42
--- 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.<CastToObject>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.<InvokeActionAsyncCore>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.<ExecuteAsync>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.<SendAsync>d__15.MoveNext()
like image 847
ubienewbie Avatar asked Nov 07 '22 02:11

ubienewbie


1 Answers

  • Docker Desktop is not supported on Windows Server 2019 OS host, Docker Desktop is only supported on Windows 10 host, Mac and planned for Linux Desktop ( there are kernel difference b/w Windows server host and Windows 10 desktop)

  • With Windows Server 2019 you can install Docker Engine Enterprise (now known as Mirantis Container Runtime (MCR) ) and run windows containers.

  • Following documentation from Microsoft has information on installing Docker Engine on Windows Server : https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=Windows-Server

  • If you want to install via script checkout this link (Docker Engine Enterprise now known as Mirantis Container Runtime): https://docs.mirantis.com/containers/v3.1/mcr-deployment-guide/mcr-windows.html

  • You can also checkout this blog here and follow the steps to install Docker Engine on Windows Server host : https://mechdeveloper.medium.com/windows-server-2016-containers-bc0baa2222c1

like image 102
mechDeveloper Avatar answered Nov 15 '22 10:11

mechDeveloper