无法在 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”的响应