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

C# windows/amd64 Server 2016没有匹配的清单,c#,.net,docker,windows-server-2016,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 an

创建了一个简单的.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"]
第二步: 尝试了vs2019,创建了新的MVC应用=>添加docker支持(windows)docker文件:

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主机

服务器上安装的Docker:

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


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

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

对于第一个错误:
清单列表项中没有与windows/amd64 10.0.14393匹配的清单
,当使用没有与Docker主机的OS版本/体系结构匹配的具体标记的多拱标记时,会发生此错误。我不确定到底是哪个标记导致了错误,但我猜是
microsoft/dotnet:aspnetcore运行时
。这是一个多拱形标记,Docker将查看您的主机信息,以将该标记解析为特定于OS版本/体系结构的具体标记。在本例中,主机版本10.0.14393没有可用的标记

对于第二个错误:
基于Windows版本10.0.17763的映像与10.0.14393主机不兼容
,在这种情况下,您使用的是特定于Windows版本的标记,因此此处无需解析;您正在明确说明所需映像的Windows版本。问题是,您正在尝试使用比Docker主机使用的Windows版本更高的Windows版本。这是不可能做到的;您只能使用相同版本或更低版本(并且只能基于某些条件使用更低版本:)


Windows Server 2016没有任何受支持的.NET核心映像。有关当前标记列表,请参见此处:。如果您能够使用Windows Server版本1803或更高版本,您应该很好。

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

对于第一个错误:
清单列表项中没有与windows/amd64 10.0.14393匹配的清单
,当使用没有与Docker主机的OS版本/体系结构匹配的具体标记的多拱标记时,会发生此错误。我不确定到底是哪个标记导致了错误,但我猜是
microsoft/dotnet:aspnetcore运行时
。这是一个多拱形标记,Docker将查看您的主机信息,以将该标记解析为特定于OS版本/体系结构的具体标记。在本例中,主机版本10.0.14393没有可用的标记

对于第二个错误:
基于Windows版本10.0.17763的映像与10.0.14393主机不兼容
,在这种情况下,您使用的是特定于Windows版本的标记,因此此处无需解析;您正在明确说明所需映像的Windows版本。问题是,您正在尝试使用比Docker主机使用的Windows版本更高的Windows版本。这是不可能做到的;您只能使用相同版本或更低版本(并且只能基于某些条件使用更低版本:)


Windows Server 2016没有任何受支持的.NET核心映像。有关当前标记列表,请参见此处:。如果您能够使用Windows Server版本1803或更高版本,您应该很好。

试试nanoserver 1709或docker pull mcr.microsoft.com/Windows/servercore:ltsc2016那么mcr.microsoft.com/dotnet/core/sdk:2.2-nanoserver-1803呢?我在步骤4中遇到了相同的错误。dotnet还原是否可以处理这些映像?请尝试nanoserver 1709或docker pull mcr.microsoft.com/windows/servercore:ltsc2016 mcr.microsoft.com/dotnet/core/sdk:2.2-nanoserver-1803?我在第4步也遇到了同样的错误。dotnet还原可以处理这些图像吗?谢谢!这对我帮助很大。我到处寻找真正的原因,人们唯一谈论的是Linux和windows之间的变化;然后改变实验模式。来看看我只是需要一个更好的形象。谢谢,谢谢!这对我帮助很大。我到处寻找真正的原因,人们唯一谈论的是Linux和windows之间的变化;然后改变实验模式。来看看我只是需要一个更好的形象。非常感谢。