Docker Windows容器CMD – 命令没有运行

我有一个docker图像,以下面的CMD结束:

CMD ["powershell", "c:\install\settings\install.ps1"]

要么

CMD powershell c:\install\settings\install.ps1

它没有执行(或者也许没有安装音量)。

设置被放置在一个安装的卷中,并以下列方式启动:

docker run -d -p 80:80 --name openid --rm -v D:\settings\:c:\install\settings mydocker

如果我在启动Docker镜像后运行命令:

docker exec openid powershell c:\install\settings\install.ps1

它运行良好。

有没有办法做到这一点?

还是有更好的方式部署一个IIS网站与webdeploy和自定义SetParameters.xml

试试这个,可能是斜线的问题。

CMD ["powershell", "c:/install/settings/install.ps1"]

尝试

 # set up the shell SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"] CMD ["powershell", "c:\\\install\\\settings\\\install.ps1"] 

在Windows中,反斜杠是文件path中的分隔符,所以我们必须在Dockerfiles中将其转义,否则将被解释为行继续。 文件path然后有双反斜杠\,单个反斜杠用于行延续

来自: https : //blog.sixeyed.com/windows-dockerfiles-and-the-backtick-backslash-backlash/

您可以将PS脚本传递给docker命令,如下所示:

 CMD ["powershell .\\myscript.ps1"] 

为了能够在任何已安装的Windowsterminal应用程序中运行docker命令,您需要执行以下操作 –

在Windows cmd中运行以下命令:

 docker-machine env default --shell cmd 

你应该得到几行输出。 在cmd中复制并运行下面包含KEYS的行:

 SET DOCKER_TLS_VERIFY=value from the output SET DOCKER_HOST=value from the output SET DOCKER_CERT_PATH=value from the output ending with \default SET DOCKER_MACHINE_NAME=default 

注:上述步骤将临时设置这些envvariables,一旦closuresterminal将丢失。

为避免每次设置/input,最好的方法是将它们设置为系统环境variables(最好在用户下),除非这些值被更改,否则不必担心再次input它们。 一旦设置,你应该能够从任何已安装的terminal,如cmd,电源shell或git(如果已安装)运行docker命令。 快乐的Dockering!