Windows / amd64 Server 2016没有匹配的清单

时间:2019-09-12 18:00:26

标签: c# .net docker windows-server-2016

创建了一个简单的.net核心应用程序。尝试运行docker build,但我得到了:

  

“清单中没有适用于Windows / amd64 10.0.14393的清单   列出条目”

Docker文件:

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "HelloWorld.dll"]

采取2: 尝试过vs2019,创建了新的MVC应用=>添加Docker支持(Windows)Dockerfile:

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-nanoserver-1809 AS build
WORKDIR /src
COPY ["coremvc.csproj", ""]
RUN dotnet restore "./coremvc.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "coremvc.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "coremvc.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "coremvc.dll"]

现在得到:

  

基于Windows版本10.0.17763的映像与以下版本不兼容:   10.0.14393主机

enter image description here

服务器上安装的Docker:

  

名称版本   ---- ------- Docker 19.03.2

为什么我不能在Windows Server 2016上运行它们?在本地Windows 10上运行良好

1 个答案:

答案 0 :(得分:1)

对于Windows映像,在确定应使用哪个映像标签时,Docker主机的Windows版本至关重要。

对于第一个错误:no matching manifest for windows/amd64 10.0.14393 in the manifest list entries,当使用没有与您的Docker主机的OS版本/体系结构匹配的具体标签的多体系结构标签时,会发生此错误。我不确定是哪个标签引起了错误,但我猜想是microsoft/dotnet:aspnetcore-runtime。这是一个多体系结构标签,Docker将查看您的主机信息,以将该标签解析为特定于OS版本/体系结构的具体标签。在这种情况下,您的主机版本10.0.14393没有可用的标签。

对于第二个错误:a Windows version 10.0.17763-based image is incompatible with a 10.0.14393 host,在这种情况下,您使用的是Windows版本特定的标记,因此此处无需解析。您在明确说明所需的Windows版本。问题是您要使用的Windows版本高于Docker主机使用的Windows版本。那是不可能的。您只能使用相同或更低的版本(并且您只能根据特定条件使用较低的版本:https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility)。

Windows Server 2016没有可用的任何受支持的.NET Core映像。有关当前标签列表,请参见此处:https://hub.docker.com/_/microsoft-dotnet-core-sdk。如果您能够使用Windows Server 1803或更高版本,那就应该不错。