Я заметил, что поведение обработки пути изменилось с ws2016 imgae microsoft/windowsservercore:latest
на ws2019 image mcr.microsoft.com/windows/servercore:ltsc2019
.
На microsoft/windowsservercore:latest
изображении все команды ниже работают.
Однако для mcr.microsoft.com/windows/servercore:ltsc2019
образа точка входа должна быть задана как абсолютный путь, чтобы иметь возможность вызывать исполняемый файл в контейнере Docker. Или установите точку входа на powershell
.
Кто-нибудь знает, что изменилось между microsoft/windowsservercore:latest
и mcr.microsoft.com/windows/servercore:ltsc2019
образом при обработке пути к исполняемому файлу?
Репро шаги:
Условие: найдите любой исполняемый файл и назовите его test.exe
Dockerfile
FROM mcr.microsoft.com/windows/servercore:ltsc2019
ADD test.exe test.exe
Создайте этот Dockerfile как test-image
Запустить это изображение
Рабочая команда
docker run --entrypoint powershell test-image "C:\test.exe"
docker run --entrypoint C:\test.exe test-image
docker run test-image "C:\test.exe"
Не рабочие команды (однако все они работают на microsoft/windowsservercore:latest
изображении)
docker run --entrypoint ./test.exe test-image
docker run test-image "./test.exe"
# error message
C:\Program Files\Docker\docker.exe: Error response from daemon: container ff8cff9dbd233a2f0ab3764203da42c47249b66a84b8369643315f2e210f86c6 encountered an error during CreateProcess: failure in a Windows system call: The system cannot find the file specified. (0x2) extra info: {"CommandLine":".\test.exe ","WorkingDirectory":"C:\\","CreateStdInPipe":true,"CreateStdOutPipe":true,"CreateStdErrPipe":true,"ConsoleSize":[0,0]}.