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

no matching manifest for windows/amd64 Server 2016

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

"no matching manifest for windows/amd64 10.0.14393 in the manifest list entries"

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"]

现在得到:

a Windows version 10.0.17763-based image is incompatible with a 10.0.14393 host

Docker 安装在服务器上:

Name Version ---- ------- Docker 19.03.2

为什么我不能在 Windows Server 2016 上 运行 这些?。它在 Windows 10 本地

上运行良好

对于 Windows 个图像,Docker 主机的 Windows 版本在确定您应该使用哪个图像标签时很重要。

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

对于第二个错误:a Windows version 10.0.17763-based image is incompatible with a 10.0.14393 host,在这种情况下,您使用的是 Windows 特定于版本的标记,因此此处无需解析;您明确说明了您想要的图像的 Windows 版本。问题是您尝试使用的 Windows 版本高于 Docker 主机使用的版本。那是做不到的;您只能使用相同或更低的版本(并且您只能根据特定条件使用更低的版本: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 服务器版本 1803 或更高版本,那应该没问题。