如何在Docker中运行32位.NET Core应用程序

时间:2019-05-28 07:43:16

标签: c# docker .net-core dockerfile runtime-identifier

我有一个要在Docker容器中运行的32位(x86).NET Core 2.2应用程序。 我的应用程序的64位版本可以在容器中正常工作,但是32位版本无法启动。没有生成Docker日志文件。

我使用以下命令发布我的应用程序:

dotnet publish -c Release -r win-x86

这将创建一个包含可执行文件的独立x86应用程序。 如果我运行可执行文件,则可以正常运行。

然后我使用此Dockerfile构建容器映像:

FROM mcr.microsoft.com/dotnet/core/runtime:2.2
WORKDIR /app
COPY bin/Release/netcoreapp2.2/win-x86/publish/ ./
ENTRYPOINT ["DockerX86Test.exe"]

和此命令:

docker build -t x86test .

当我使用此命令运行图像时:

docker run -it x86test

容器立即退出,没有生成Docker日志。

我的应用程序非常简单,就像这样:

class Program
{
    static void Main(string[] args)
    {
        int i = 1;

        do
        {
            Console.WriteLine("Hello World! - " + i);
            Thread.Sleep(600);

        } while (i++ < 10);
    }
}

我使用了错误的基本图像吗?我找不到标记为x86的.NET Core运行时基础映像。

1 个答案:

答案 0 :(得分:0)

将基本映像更改为mcr.microsoft.com/windows/servercore:ltsc2019解决了我的问题。

显然,mcr.microsoft.com / dotnet / core / runtime:2.2映像无法运行32位应用程序。