Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker-Windows contaier在脚本之后退出_Docker_Containers_Windows Container - Fatal编程技术网

Docker-Windows contaier在脚本之后退出

Docker-Windows contaier在脚本之后退出,docker,containers,windows-container,Docker,Containers,Windows Container,我制作了一些容器(在Unix环境中运行,其中entrypoint是一个脚本文件。这些脚本文件通常管理一些配置,然后使用exec“$@”执行CMD)。在创建/测试这样的映像时,我通常会返回命令提示符,以便手动断言配置。这很好。 然而,今天我制作了一个类似的图像,但是基于windows容器(microsoft/nanoserver),在这里我遇到了一些问题 1) 我制作了一个powershell脚本来进行配置,但在powershell中,我不能使用exec“$@”将执行转发到CMD。windows容

我制作了一些容器(在Unix环境中运行,其中entrypoint是一个脚本文件。这些脚本文件通常管理一些配置,然后使用exec“$@”执行CMD)。在创建/测试这样的映像时,我通常会返回命令提示符,以便手动断言配置。这很好。 然而,今天我制作了一个类似的图像,但是基于windows容器(microsoft/nanoserver),在这里我遇到了一些问题

1) 我制作了一个powershell脚本来进行配置,但在powershell中,我不能使用exec“$@”将执行转发到CMD。windows容器中的等效项是什么

2) 如果我创建了一个基于microsoft/nanoserver的映像,并且只复制了一些文件,那么您将保持交互模式(如果您使用-it参数运行容器)。但是,只要我将入口点指向powershell脚本,容器就会在运行脚本后立即终止,即使我在run命令中附加了cmd


所以基本上我的问题是:如何让它在执行脚本后进入命令提示符?(使用windows容器)。

此问题类似于

如果在dockerfile的末尾添加

ping -t localhost

它应该保持运行状态(…当然,除非文件中有其他错误)

这个问题与

如果在dockerfile的末尾添加

ping -t localhost

它应该保持运行状态(……当然,除非文件中有其他错误)

下面的内容对我来说很好。运行脚本并返回提示符#escape=`FROM microsoft/nanoserver SHELL[“powershell”,“-Command”,“$ErrorActionPreference='Stop';$ProgressPreference='Continue';$verbosePreference='Continue';”]entrypoint powershell.exe{写入输出“hello”};powershell,谢谢Gregory,我想让它正常工作了。但是,我不知道SHELL[“powershell”、“-Command”、“$ErrorActionPreference=‘Stop’;$ProgressPreference=‘Continue’;$verbosePreference=‘Continue’;”]是做什么的。还有一点奇怪,我们需要在入口点中有两个powershell.exe语句。@Galtrold您没有。使用
SHELL[“powershell”]
,您的
ENTRYPOINT
由powershell.exe运行,因此它可以是任何有效的powershell表达式。您可以直接运行脚本文件或<代码>调用表达式< /代码>。运行脚本并返回提示符#escape=`FROM microsoft/nanoserver SHELL[“powershell”,“-Command”,“$ErrorActionPreference='Stop';$ProgressPreference='Continue';$verbosePreference='Continue';”]entrypoint powershell.exe{写入输出“hello”};powershell,谢谢Gregory,我想让它正常工作了。但是,我不知道SHELL[“powershell”、“-Command”、“$ErrorActionPreference=‘Stop’;$ProgressPreference=‘Continue’;$verbosePreference=‘Continue’;”]是做什么的。还有一点奇怪,我们需要在入口点中有两个powershell.exe语句。@Galtrold您没有。使用
SHELL[“powershell”]
,您的
ENTRYPOINT
由powershell.exe运行,因此它可以是任何有效的powershell表达式。可以直接运行脚本文件或<代码>调用表达式< /代码>。考虑使用脚本作为入口点的这个DoCKER容器。