使docker集装箱能够优雅地停下来永远运转
我正在尝试创build一个docker集装箱。 它应该永远在后台运行。 但是,每当我按Ctrl + C或docker stop
,它应该closures,不浪费任何进一步的时间。
我目前的代码
#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
我可以让它永远运行,但由于某种原因,我的脚本没有收到TRAP事件。 任何线索如何解决这个问题。
你可以考虑在STOPSIGNAL
中使用(使用docker 1.9+)STOPSIGNAL。
STOPSIGNAL指令设置将被发送到容器的系统调用信号以退出。
这个信号可以是一个有效的无符号数字,与内核的syscall表中的一个位置相匹配,例如9,或者SIGNAME格式的信号名称,例如SIGKILL。
但是对于pipe理这种信号的脚本,请参阅“ 在Docker容器中捕获信号 ”及其program.sh
,编排其他非PID1进程。
用标志启动你的容器: -t
& -i
:
docker run -it --name=<container_name> <image>:<tag>
这将使您能够使用ctrl+c
退出
看到这个docker问题的更多信息。