docker - 如何在 Amazon AWS EC2 Windows 上使用 Windows 容器运行 Docker Desktop(或者这不可能)?
问题描述
我有一台运行 Windows 10 的 DESKTOP 机器,运行 Windows 10、Microsoft 365、以 Windows 容器模式运行的 Docker Desktop。
我有一台运行 Windows Server 2019 的 Amazon EC2 机器,并且在那里也安装了 Microsoft 365 并通过 RDP 访问。
基本上我想要的是创建一个 EC2 机器,它允许我运行 Microsoft 365 和 Docker Desktop 在 Windows 容器模式下运行。
我已经尝试创建 AWS EC2 实例并安装 Docker for Desktop,但我得到了很多神秘的错误。(见下文)。
我尝试在https://aws.amazon.com/marketplace/server/procurement?productId=d94e0325-6111-4c69-8c29-87e784a6d0aa中使用 Microsoft 的这个 AMI 和 Hyper-V
[或者我应该为此使用 Docker Enterprise 吗?]
[或者根本不可能获得一台在 AWS 上运行 Docker Windows 容器的 Windows 机器?]
[或者我是否需要选择特定类型的机器大小 [t4.large 或其他] - 我在 Microsoft Azure 上体验过,只有在特定规格的机器上才能运行 Docker Desktop,这允许“虚拟化之上的虚拟化” "]
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()
解决方案
Windows Server 2019 OS 主机不支持 Docker Desktop,Docker Desktop 仅在 Windows 10 主机、Mac 和计划用于 Linux 桌面上支持(Windows 服务器主机和 Windows 10 桌面存在内核差异)
使用 Windows Server 2019,您可以安装 Docker Engine Enterprise(现在称为 Mirantis Container Runtime (MCR))并运行 Windows 容器。
以下来自 Microsoft 的文档包含有关在 Windows Server 上安装 Docker 引擎的信息: https ://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=Windows-Server
如果您想通过脚本安装,请查看此链接(Docker Engine Enterprise 现在称为 Mirantis Container Runtime): https ://docs.mirantis.com/containers/v3.1/mcr-deployment-guide/mcr-windows.html
您还可以在此处查看此博客并按照步骤在 Windows Server 主机上安装 Docker 引擎: https ://mechdeveloper.medium.com/windows-server-2016-containers-bc0baa2222c1
推荐阅读
- r - 翻转矩阵列
- ios - 使用 Swift、AlamoFire 和 SwiftyJSON 解析 JSON 数据
- html - CSS how center inputs
- python - Python livewires resize screen
- opengl - What is the difference between glVertexAttribDivisor and glVertexBindingDivisor?
- python - How do I properly use super method for subclasses in Dart?
- c# - 使用关闭按钮退出整个应用程序 c#
- c# - Specifically target older version of single .NET Standard API/namespace (Entity Framework Core)
- java - java(库)似乎找不到grooy类
- .net - 实体框架代码优先共享数据层,模型不好?