【问题标题】:no matching manifest for windows/amd64 Server 2016windows/amd64 Server 2016 没有匹配的清单
【发布时间】:2020-01-14 15:47:27
【问题描述】:

创建了一个简单的 .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 主机

安装在服务器上的 Docker:

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

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

【问题讨论】:

  • 尝试 nanoserver 1709 或 docker pull mcr.microsoft.com/windows/servercore:ltsc2016
  • mcr.microsoft.com/dotnet/core/sdk:2.2-nanoserver-1803 怎么样?我在第 4 步遇到了同样的错误。
  • dotnet restore 是否可以处理这些图像?

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


【解决方案1】:

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

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

对于第二个错误:a Windows version 10.0.17763-based image is incompatible with a 10.0.14393 host,在这种情况下,您使用的是特定于 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 或更高版本,那么您应该很好。

【讨论】:

  • 谢谢!这对我帮助很大。我一直在寻找真正的原因,人们谈论的唯一一件事就是在 Linux 和 Windows 之间发生变化;然后改变实验模式。来发现我只是需要一个更好的形象。谢谢?
猜你喜欢
  • 2018-06-12
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多