Bash 使docker容器永远运行,同时能够优雅地停止
我正在尝试创建一个docker容器。它应该永远在后台运行。但每当我按下Ctrl+C或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 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循环退出,容器进程也随之死亡。