在 Windows 2019 Server 上运行 Linux 容器出错。

14

我刚在 Windows 2019 服务器上安装了 Docker,以运行 Linux 容器。

我按照这个指南的“在 Windows Server 2019 上运行 Linux 容器”章节进行操作。当我尝试运行 bash shell 时,出现了以下错误:

docker.exe: failed to register layer: failed to start service utility VM (applydiffe53547ea1d150a4e4afba05378a3a45be5ea769d52fddf03ff25dbd09e43d20d): container e53547ea1d150a4e4afba05378a3a45be5ea769d52fddf03ff25dbd09e43d20d_svm encountered an error during CreateContainer: failure in a Windows system call: The virtual machine could not be started because a required feature is not installed.

有人知道缺少哪个功能吗?

更新: 看起来问题与过程中的第一个错误有关。 运行以下命令时:

Get-VM WinContainerHost | Set-VMProcessor -ExposeVirtualizationExtensions $true

它抛出错误:

Get-VM : Hyper-V was unable to find a virtual machine with name "ContainerHost". 

我抛弃了相信脚本中的指南,因为没有任何命令创建WinContainerHost虚拟机。

解决方案更加混乱,有两种类型的容器,hyper-v和服务器容器,就像这篇指南中所介绍的。我不确定应该选择哪个路径。我很迷茫。


3
请尝试执行以下命令:Get-VM *WinContainerHost* | Set-VMProcessor -ExposeVirtualizationExtensions $true - Stanislav Trifan
你最终做了什么?只是好奇 - 你是在云端还是本地运行Windows 2019?我想在Windows 2019上运行Linux容器 - 即LCOW,但在我找到的所有文章中都说它还没有准备好用于生产。 - boggy
是的,我发现得太晚了。所以我放弃了,并为Linux容器设置了一个侧面的Linux主机。我对这个解决方案并不满意,但目前没有其他安全的方法。 - MiguelSlv
我正在尝试在由AWS(EC2)提供的Windows Server 2019上进行此操作。 - Mojimi
据我所知,它还不准备好用于生产。 - MiguelSlv
显示剩余2条评论
2个回答

6

我知道这样说可能有些愚蠢,但我的意思是真的很傻。

我已经解决了这个问题,而且我简直不敢相信到处都有人问这个问题却没有答案。

基本上你只需要在Hyper-V中创建一个虚拟机。它不需要操作系统或任何特殊参数。

就是这样。

New-VM -Name WinContainerHost -MemoryStartupBytes 1GB

完成此操作后,Get-VM可以工作,Docker启动并运行Linux容器。

我的意思是,我该说什么!!!


5

很抱歉,我没有足够的声誉来评论/询问更多信息。

Hyper-V容器或Moby VM在运行Linux容器时是必需的-虚拟化是运行这些容器所必需的。因此,在这种情况下,您不能使用“服务器容器”。

启用VT-x(例如来自BIOS的虚拟化)-嵌套虚拟化需要此设置。在AWS上,您需要裸金属实例

如果这些都没问题,您可以尝试已经提到的命令。

Get-VM *WinContainerHost* | Set-VMProcessor -ExposeVirtualizationExtensions $true

如果名称稍有不同,那么您可以尝试以下操作。如果仍然无法成功,Get-VM 命令应该会列出所有虚拟机,输出是什么?

您可以安装所需的模块来运行 LCOW。

Install-WindowsFeature -Name Hyper-V,Containers -IncludeAllSubFeature -IncludeManagementTools

再试一次。如果仍不存在,则此处提供的脚本可用于创建“容器主机”。


我遇到了与 OP 相同的问题。当我运行 Get-VM 命令时,没有任何返回结果。但是,运行“Get-VM WinContainerHost”代码时,我没有收到任何错误信息。 - Edvard-D
卡在同一个地方。Get-VM没有返回任何内容,我认为应该有东西创建WinContainerHost。在网上搜索了很多,有很多人问同样的问题,但没有答案。有一个Import-VM命令,可以从文件中导入,但没有详细信息告诉我在哪里可以获取这些文件。似乎我们只需要运行一个VM,但没有关于如何做到这一点的信息。 - Marc Nealer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接