Dotnet构建与Docker崩溃

Dotnet构建与Docker崩溃,docker,.net-core,Docker,.net Core,当我从VS2017生成的Dockerfile运行默认值时,几分钟后,我得到以下错误: 命令“cmd/S/C dotnet build”XXX.csproj-c Release-o/app'返回非零代码:4294967295:无法关闭容器:容器E9402AAEF7780A5C66DCA0E3B9F5683C3C2CCC079FF7934844301067BD1C07AD在关闭期间遇到错误:Windows系统调用失败:与承载容器的虚拟机的连接已关闭。(0xc037010a) 因为我是Docker的新

当我从VS2017生成的Dockerfile运行默认值时,几分钟后,我得到以下错误:

命令“cmd/S/C dotnet build”XXX.csproj-c Release-o/app'返回非零代码:4294967295:无法关闭容器:容器E9402AAEF7780A5C66DCA0E3B9F5683C3C2CCC079FF7934844301067BD1C07AD在关闭期间遇到错误:Windows系统调用失败:与承载容器的虚拟机的连接已关闭。(0xc037010a)

因为我是Docker的新手,我没有主意。有人知道我为什么或者如何解决它吗

我正在使用Docker 19.03.4

Dockerfile:

FROM microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM microsoft/dotnet:2.2-sdk-nanoserver-1803 AS build
WORKDIR /src
COPY ["XXX.csproj", "XXX/"]
.
.
.
COPY ["XXX.csproj", "XXX/"]
RUN dotnet restore "XXX.csproj"
COPY . .
WORKDIR "/src/XXX"
RUN dotnet build "XXX.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "XXX.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", XXX.dll"]

更新:
我删除了所有的映像(48个),现在可以工作了,只需要花很长时间。

看起来dotnet构建失败了,最好在外部构建和发布二进制文件,并将它们复制到docker映像,这样可以缩短docker构建时间。

看起来dotnet构建失败了,最好在外部构建和发布二进制文件,并将它们复制到docker映像,这样可以缩短docker构建时间。

检查.net核心容器映像的版本

插入一个小run命令,如下所示

FROM microsoft/dotnet:2.2-sdk-nanoserver-1803 AS build
WORKDIR /src
RUN dotnet --version
COPY ["XXX.csproj", "XXX/"]
还要检查本地计算机的dotnet版本

dotnet --version

这两个版本应该匹配。我以前遇到过一个问题,其中一个是预览版本。

检查.net核心容器映像的版本

插入一个小run命令,如下所示

FROM microsoft/dotnet:2.2-sdk-nanoserver-1803 AS build
WORKDIR /src
RUN dotnet --version
COPY ["XXX.csproj", "XXX/"]
还要检查本地计算机的dotnet版本

dotnet --version

这两个版本应该匹配。我曾经遇到过一些问题,其中一个是预览版。

首先,最好避免使用德语说明问题细节:))幸运的是,我能理解上面所说的:)1。您正在使用docker for windows吗?2.看起来docker运行的虚拟linux机器由于某种原因关闭了。您是否正在使用hyper-v(windows docker的默认VM提供程序)?是的,我知道,对不起:“与主机的连接已关闭”我刚刚在上面添加了几个问题,您能否提供这些信息。是的,Windows 2。Hyper-V:是的,这个项目的构建过程中是否有任何定制?此构建是否依赖于某些docker命令?例如,在构建过程中运行一些容器、一些post操作等?首先,最好避免使用德语:))中的问题详细信息。幸运的是,我能够理解所说的内容:)1。您正在使用docker for windows吗?2.看起来docker运行的虚拟linux机器由于某种原因关闭了。您是否正在使用hyper-v(windows docker的默认VM提供程序)?是的,我知道,对不起:“与主机的连接已关闭”我刚刚在上面添加了几个问题,您能否提供这些信息。是的,Windows 2。Hyper-V:是的,这个项目的构建过程中是否有任何定制?此构建是否依赖于某些docker命令?例如,在构建过程中运行一些容器、一些post操作等?我认为DockerFile的全部思想是允许您构建映像中所需的依赖项/应用程序(如果需要,还可以编译)。dotnet build应该可以正常工作。它应该作为注释进行更改,因为您没有回答实际的问题。每个添加、运行和复制命令都会创建新的Docker层。复制源文件并编译它有什么意义?您可以复制编译过的项目,这样可以减少图像大小和Docker生成时间。@MrFox It(差不多)获得可复制的版本!为什么只有当您(几乎)可以免费获得可复制的构建时,才限制docker用于可复制的部署?至于层大小,您可以减少运行命令的数量,并删除您知道在接下来的步骤中不打算使用的文件。我认为DockerFile的整个思想是允许您在映像中构建(以及在必要时编译)所需的依赖项/应用程序。dotnet build应该可以正常工作。它应该作为注释进行更改,因为您没有回答实际的问题。每个添加、运行和复制命令都会创建新的Docker层。复制源文件并编译它有什么意义?您可以复制编译过的项目,这样可以减少图像大小和Docker生成时间。@MrFox It(差不多)获得可复制的版本!为什么只有当您(几乎)可以免费获得可复制的构建时,才限制docker用于可复制的部署?至于图层大小,您可以减少运行命令的数量,并删除您知道在接下来的步骤中不会使用的文件。