如何使用docker run命令执行ps1脚本?

时间:2019-11-26 14:30:45

标签: powershell docker devops powershell-core docker-run

我需要使用官方的PowerShell Core Docker映像来运行Docker容器并使其执行PowerShell脚本文件。

我知道可以使用Dockerfile和Docker构建完成此操作,但在这种情况下不能使用。

通过阅读文档,我想到了这一点,但是它似乎不起作用:

docker run -it --rm --entrypoint "/tmp/test.ps1" repo/powershell:latest

docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"/tmp/test.ps1\": stat /tmp/test.ps1: no such file or directory": unknown.
ERRO[0001] error waiting for container: context canceled

错误似乎表明找不到文件,但是手动运行stat "/tmp/test.ps1"时可以正常工作。

我觉得还应该指定二进制文件pwsh,但找不到解决方法。

1 个答案:

答案 0 :(得分:1)

docker run -it mcr.microsoft.com/powershell pwsh -c "Write-Host 'Hello, World'"

这会产生Hello, World

mcr.microsoft.com/powershell是Google返回的official PowerShell Core Docker image

此图像内部没有文件/tmp/test.ps1。因此无法完全弄清楚repo/powershell:latest里面的图像。

  • 如果您尝试读取文件并在docker内部执行,那对我来说就很好了:
docker run -it --rm mcr.microsoft.com/powershell pwsh -c $(cat test.ps)
  • 或者,如果您尝试将主机文件传递到容器中并执行,则可以将本地路径映射到容器内部的路径,然后将其映射为:
docker run -v /tmp/localdata:/tmp/containerdata  -it --rm mcr.microsoft.com/powershell pwsh /tmp/containerdata/test.ps

假设您在主机/tmp/localdata文件夹中,该文件夹包含带有test.ps文本的Write-Host 'Hello, World!'文件。

两种方法的结果都是Hello, World