Как запустить 32-битное приложение .NET Core в Docker - PullRequest
1 голос
/ 28 мая 2019

У меня 32-битное (x86) приложение .NET Core 2.2, которое я хочу запустить в контейнере Docker.64-битная версия моего приложения прекрасно работает в контейнере, но 32-битная версия не запускается.Файлы журнала Docker не создаются.

Я публикую свое приложение с помощью этой команды:

dotnet publish -c Release -r win-x86

Это создает автономное приложение x86, включая исполняемый файл.Если я запускаю исполняемый файл, он работает нормально.

Затем я создаю образ контейнера с помощью этого файла Docker:

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);
    }
}

Яиспользуя неправильное базовое изображение?Мне не удалось найти базовый образ среды выполнения .NET Core с тегом x86.

1 Ответ

0 голосов
/ 28 мая 2019

Изменение базового образа на mcr.microsoft.com/windows/servercore:ltsc2019 решило мою проблему.

Очевидно, что образ mcr.microsoft.com/dotnet/core/runtime:2.2 не может запускать 32-разрядные приложения.

...