Запустите exe внутри контейнера докеров Windows

Я не могу запустить исполняемый файл Windows внутри докера. Пробовал как с CMD ["test.exe"], так и в интерактивном режиме. Во всех случаях исполняемый файл завершается немедленно без каких-либо сообщений об ошибках, что затрудняет отладку. Кто-нибудь испытал что-то подобное? Может дело в dll? exe отлично работает на хост-системе Win 10. Используемый образ - windowsservercore


person Mr Alexander    schedule 07.12.2018    source источник
comment
у вас когда-нибудь это работало?   -  person Percy    schedule 21.07.2020


Ответы (2)


Я столкнулся с аналогичной проблемой, пытаясь запустить exe внутри контейнера на основе WindowsServercore, и, как вы подозреваете в вашем случае, проблема была связана с отсутствием dll. Я использовал procmon, чтобы определить, какие библиотеки DLL загружаются моим процессом при запуске. а затем убедиться, что все эти DLL доступны внутри контейнера. В моем случае это был распространяемый пакет Visual C++ 2015, который необходимо было установить внутри контейнера при создании образа.

person sxm1972    schedule 07.12.2018
comment
Вы запускаете procmon в своей обычной среде без докеров и выясняете, что загружается при запуске. Затем вы убедитесь, что то же самое доступно в вашем контейнере Docker, соответствующим образом изменив Dockerfile. - person sxm1972; 11.12.2018
comment
Не могли бы вы объяснить, как вы использовали procmon? документация плохая. Я установил его, но не понимаю, как получить необходимую информацию - person Percy; 17.07.2020

Вы можете сделать что-то вроде этого:

docker run -it --rm microsoft/nanoserver powershell

Для любого из следующих действий вам потребуется Windows Server Core:

  • Приложения .NET Framework
  • Установщики MSI для приложений или зависимостей
  • Поддержка 32-битной среды выполнения
person UnP    schedule 07.12.2018
comment
Исполняемый файл, который я хочу запустить, не является .NET, и у меня нет для него установщика msi. Это простой 64-битный exe. Есть ли способ запустить его как есть? - person Mr Alexander; 07.12.2018