我正在尝试在运行 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 base images 。问题是,我找不到针对该服务器版本的 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 项目,所以我可能缺乏一些知识。根据this post dotnet core image is not supported on w2016。
但是我应该能够使用 hiper-v 隔离运行吗? 在this official post之后,我尝试运行
我试试这个命令:
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.
更新2:
为清楚起见,错误:
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 服务器上运行