【发布时间】:2018-04-16 07:04:49
【问题描述】:
我需要将 [Windows] Docker 容器作为可执行文件运行,运行相当复杂的 PowerShell 脚本(调用 Java 和 .NET 应用程序)并退出。 Docker documentation 建议为此使用 ENTRYPOINT。所以我继续创建了一个包含以下内容的 Dockerfile:
FROM microsoft/dotnet-framework
COPY run.ps1 /
ENTRYPOINT [ "powershell.exe", "C:\\run.ps1" ]
run.ps1的内容(本题超简体):
gci
write-host "looks like everything is good!"
然后,我运行了以下命令:
# Build the Docker image
docker build --rm -t testdockerps .
# Create/run container using above image
docker run -it testdockerps
容器运行成功,显示C:\的内容,后跟消息-looks like everything is good!。
根据我的观察,我有几个问题:
- 基于 Windows 的 Docker 容器的默认 shell 是什么?有没有办法将它设置为 PowerShell,所以我不必将“powershell”指定为
ENTRYPOINTJSON 数组的第一个元素?我应该在 Dockerfile 中使用SHELL命令吗? - 创建和运行容器大约需要 3-4 秒,这在某种程度上可以理解,但是在 PS1 脚本完成后,容器退出并返回命令提示符需要将近 10 秒的时间。造成这种延迟的原因可能是什么?
【问题讨论】:
标签: powershell docker docker-for-windows docker-entrypoint