4

我需要使用官方的 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也应该指定二进制文件,但找不到方法。

4

1 回答 1

6

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

这会产生Hello, World

mcr.microsoft.com/powershell这就是谷歌返回的内容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

于 2019-11-26T22:19:02.860 回答