1

我想在 Azure 容器实例上运行 .NET Framework (4.8) 控制台应用程序。

https://github.com/microsoft/dotnet-framework-docker/tree/master/samples/dotnetapp开始

如果我直接创建 ACI:

az container create --resource-group mygroup --name nethowdy --image mcr.microsoft.com/dotnet/framework/samples:dotnetapp --restart-policy Never --os-type Windows

...它按预期运行 - 即,它成功完成,并且输出正确:

az container logs --resource-group mygroup --name nethowdy

到目前为止,一切都很好。

然后我克隆了https://github.com/microsoft/dotnet-framework-docker并进入了 samples/dotnetapp 文件夹。在本地构建/运行 docker 工作正常。

但是,当我尝试将该示例图像构建到 ACR 中时,我无法让它工作。具体来说,我这样做:

az acr build --registry myreg --image nethowdy --file Dockerfile.basic --platform windows .

该构建过程成功,一切看起来都很好。但是当我尝试从中创建容器时,它失败了:

az container create --resource-group mygroup --name nethowdy --image myreg.azurecr.io/nethowdy --restart-policy Never --os-type Windows

具体来说,我收到此错误:

BadRequestError:不支持的 Windows 图像版本。支持的版本是“Windows Server 2016 - 2B 之前、Windows Server 2019 - 2B 之前、Windows Server 2016 - 2B 之后、Windows Server 2019 - 2B 之后”

谁能告诉我我做错了什么?这是基本的 .NET Framework 映像,因此它应该能够在 ACI 上运行 - 当我从 Microsoft 的映像而不是我的映像创建容器时,它显然可以运行。这是 ACI/ACR 或类似的身份验证问题吗?我会很感激任何线索。

编辑:我已经越过了障碍,所以我没有被困住 - 但我仍在弄清楚“问题”的细节......我很快就会发布我自己的答案以帮助下一个人

4

2 回答 2

0

该错误已经向您显示了原因:不支持的 Windows 映像版本。ACI 不支持所有的 windows 映像,您可以在此处获取有关 ACI 中支持的 windows 映像的详细信息。

于 2020-12-14T02:24:21.550 回答
0

正如之前指出的那样,该问题在 ACI 中不支持用于制作图像的 Windows 版本。

此链接指示受支持的操作系统版本:https ://docs.microsoft.com/en-gb/azure/container-instances/container-instances-faq

建议使用许多命令来找出容器中的操作系统。确保docker exec -it {container name} cmd首先将 {container name} 替换为容器的 id 或名称。然后,这将允许您在 cmd 中运行命令,例如 ver 以获取版本。

最后,您可能遇到此问题的原因是因为在您的 docker 文件中,您没有指定要使用的操作系统的基本映像。

例如FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base

如果您查看 docker hub 上的图像文档

例如https://hub.docker.com/_/microsoft-dotnet-aspnet/

您将找到有关用于构建映像的 OS 映像的信息。找到一个与 ACI 兼容的并调整您的基本映像

例如FROM mcr.microsoft.com/dotnet/aspnet:5.0.5-windowsservercore-ltsc2019 AS base

于 2021-05-05T08:00:39.923 回答