我试图在运行OS w2016的生产服务器上运行基于dotnet Core 3.0(打包在docker映像中)的应用程序。
当我在服务器上运行docker映像时,出现此不兼容的映像错误:
a Windows version 10.0.17763-based image is incompatible with a 10.0.14393 host
据我了解,我需要使用与目标主机兼容的基础映像来构建映像。 因此,我需要寻找1607基本图像。 问题是,我找不到针对该服务器版本的dotnet Core 3.0映像。
W2016是最近的,docker应该允许在每台服务器上运行,所以我在这里缺少什么?
为清楚起见,这里我正在尝试写入dockerfile:
#this image not exists for os version 1607
FROM mcr.microsoft.com/dotnet/core/runtime:3.0-nanoserver-1607 AS base
WORKDIR /app
#this image not exists for os version 1607
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-nanoserver-1607 AS build
WORKDIR /src
COPY ["ConsoleApp7/ConsoleApp7.csproj","ConsoleApp7/"]
RUN dotnet restore "ConsoleApp7/ConsoleApp7.csproj"
COPY . .
WORKDIR "/src/ConsoleApp7"
RUN dotnet build "ConsoleApp7.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ConsoleApp7.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet","ConsoleApp7.dll"]
更新:
这是我的第一个docker项目,所以我可能缺少一些知识。 根据此post,w2016不支持dotnet核心映像。
但是我应该能够使用hiper-v隔离运行吗? Following此官方帖子,我尝试运行
我尝试以下命令:
docker run -it --isolation=hyperv mcr.microsoft.com/windows/servercore:ltsc2019 cmd
但由于以下错误而失败,因为仍然需要兼容的图像:
no matching manifest for windows/amd64 10.0.14393 in the manifest list entries.
Update2:
为清楚起见,错误:
a Windows version 10.0.17763-based image is incompatible with a 10.0.14393 host
为我的探路者应用程序运行基于mcr.microsoft.com/dotnet/core/runtime:3.0-nanoserver-1903的图像时,引发了。
问题是如何打包应用程序并在Windows 2016服务器上运行