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!