【发布时间】:2019-12-02 11:46:53
【问题描述】:
我正在尝试在运行 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 项目,所以我可能缺乏一些知识。 根据这个post dotnet core image is not supported on w2016.
但是我应该能够使用 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.
更新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服务器上运行
【问题讨论】:
标签: docker .net-core devops docker-for-windows nano-server