1

我有一个 32 位 (x86) .NET Core 2.2 应用程序,我想在 Docker 容器中运行。我的应用程序的 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 运行时基础映像。

4

1 回答 1

0

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

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

于 2019-05-28T07:56:53.707 回答