Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Bash 使docker容器永远运行,同时能够优雅地停止_Bash_Docker_Dockerfile - Fatal编程技术网

Bash 使docker容器永远运行,同时能够优雅地停止

Bash 使docker容器永远运行,同时能够优雅地停止,bash,docker,dockerfile,Bash,Docker,Dockerfile,我正在尝试创建一个docker容器。它应该永远在后台运行。但每当我按下Ctrl+C或docker stop,它都会关闭,不会再浪费任何时间 我当前的代码 #RUN trap 'echo $excode' EXIT HUP INT QUIT PIPE TERM ENTRYPOINT while :; do read; done #ENTRYPOINT trap "exit 1" SIGTERM SIGHUP && tail -f /dev/null & wait &

我正在尝试创建一个docker容器。它应该永远在后台运行。但每当我按下Ctrl+C或
docker stop
,它都会关闭,不会再浪费任何时间

我当前的代码

#RUN trap 'echo $excode' EXIT HUP INT QUIT PIPE TERM
ENTRYPOINT while :; do read; done
#ENTRYPOINT trap "exit 1" SIGTERM SIGHUP && tail -f /dev/null & wait && exit 0
我可以让它永远运行,但由于某些原因,我的脚本没有接收陷阱事件。任何线索如何修复它。

< P>你可以考虑在DOCKFILE中使用(带有DOCKER 1.9 +)。< /P> STOPSIGNAL指令设置将发送到容器以退出的系统调用信号。
该信号可以是一个有效的无符号数字,与内核的syscall表中的位置相匹配,例如9,也可以是SIGNAME格式的信号名,例如SIGKILL


但对于管理此类信号的脚本,请参阅“”及其
程序.sh
,以编排其他非PID1进程。

使用以下标志启动容器:
-t
&
-i

docker run -it --name=<container_name> <image>:<tag>
docker run-it--name=:
这将使您能够使用
ctrl+c退出


有关更多信息,请参见此处。

我将在/bin/bash末尾添加,然后它打开bash命令行。我使用docker 17.05版,-它的选项与Ctrl+C一起工作,即容器外壳等待输入Ctrl+C。输入后,容器进程退出。这是由于在使容器进程的STDIN打开的选项中使用了-i。在输入Ctrl+C时,while循环退出,容器进程也随之死亡。