无法在 Azure Web App 上为来自 DockerHub 的容器部署 Windows 容器

Posted

技术标签:

【中文标题】无法在 Azure Web App 上为来自 DockerHub 的容器部署 Windows 容器【英文标题】:Unable to deploy Windows container on Azure Web App for container from DockerHub 【发布时间】:2019-07-21 09:45:02 【问题描述】:

我正在查看有关在 Azure Web App 中为容器部署 Windows 容器(预览版)的文档 here。

此外,该文档似乎落后了(因为似乎正在快速发展,并且正在预览中)。例如。在 Windows 容器部署的 steps 5 中,说明没有提及 启动文件,如下所示。如果这甚至是强制性的或可以保留为空,是否没有文档?

我在尝试部署时在底部的此面板上看到错误 Docker Hub 的公共仓库中托管的镜像中的容器。

如何解决我遇到的错误?

错误消息是:无法在其中运行此操作系统/版本 Windows 容器。支持的最高操作系统版本为 10.0.14393.9999。

这是我从 VS 2017 通过添加“容器编排支持”添加的 docker.yml。

FROM microsoft/aspnet:4.7.2-windowsservercore-1803
ARG source
WORKDIR /inetpub/wwwroot
COPY $source:-obj/Docker/publish .

这里是 docker-compose.yml

version: '3.4'

services:
  webformapp:
    image: $DOCKER_REGISTRY-webformapp
    build:
      context: .\WebFormApp
      dockerfile: Dockerfile

【问题讨论】:

【参考方案1】:

您正在使用 1803 作为容器的基本操作系统版本,但是错误提到了 10.0.14393.9999,它对应于 1607 (https://en.wikipedia.org/wiki/Windows_10_version_history)。所以你需要使用另一个基础镜像。试试这个基地:4.7.2-windowsservercore-ltsc2016

【讨论】:

【参考方案2】:

免责声明:答案并非特定于 Azure Web App,因此请谨慎对待。

但是,我已经处理过一些关于托管 Windows 容器的问题。它看起来和我之前遇到的一个问题非常相似——基本上,Docker 和 Windows 之间的虚拟化层非常薄,所以主机和容器之间的 windows 版本需要对齐。

您要么需要将 Container 版本与 Windows 版本匹配(即从不同的基础映像构建),要么在 docker run 中使用 hyper-v 虚拟化模式来处理差异。不确定第二个是否甚至可以在 Azure Web 应用程序中实现。

更多详情请看这里:

Microsoft Documentation

【讨论】:

秒是不可能的 好确认 顺便说一句,我在 PaaS“容器的 Web 应用程序”上进行部署,并且图像的版本由 VS 2017 选择......所以它不应该只是工作(即使在预览中)?我决定现在远离 Windows 容器,直到它处于 GA 模式,因为我不能在两行之间花时间阅读——尤其是当我使用 PaaS 解决方案时。 原则上同意安迪......如果只是:)。我一般会说,Windows 容器似乎与 Linux 的关系很差——似乎有很多不受支持的功能、隐藏的问题等 我们同意,正如 Joaquin 在他的回答中提到的那样,我们正在努力提高能力。现在,正如我们的文档 (docs.microsoft.com/azure/app-service/…) 中所述,您需要指定来自 asp.net 团队的多架构映像或指定 ltsc2016 映像。 Visual Studio 默认为您的本地计算机能够运行的任何内容。感谢反馈,已注明。【参考方案3】:

目前我们仅支持 Windows Server 2016 RS1 映像,但我们正在推出更新,我们将能够运行从 RS1 到 RS5 的所有 Windows 容器基础映像。我没有确切的日期,但我们应该在三月底之前完成。

现在,请将您的基本映像更改为: microsoft/aspnet:4.7.2-windowsservercore-ltsc2016

我们完成更新后,请尝试: microsoft/aspnet:4.7.2-windowsservercore-ltsc2019

ltsc2019 更小,因此您会注意到 Web 应用程序启动速度更快

更多信息: https://hub.docker.com/_/microsoft-dotnet-framework-aspnet

谢谢,

华金

【讨论】:

以上是关于无法在 Azure Web App 上为来自 DockerHub 的容器部署 Windows 容器的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure 上为 .NET Web Api 启用 CORS

在 Azure 应用服务上为 Flask Web 应用安装 unixodbc-dev

在 Google App Engine 上为用 Python 编写的 Qualtrics 创建 Web 服务

在 Azure 中创建 FTP 时,网关在指定时间段内未收到来自“Microsoft.Web”的响应

无法在 .env 上为 Laravel Sail 设置 APP_PORT

Laravel:运行队列:在 Windows Azure Web App 上连续监听