我正在尝试创建一个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
我可以让它永远运行但由于某种原因我的脚本没有收到TRAP事件。任何线索如何解决这个问题。
答案 0 :(得分:4)
您可以考虑在Dockerfile中使用(使用docker 1.9+)STOPSIGNAL
。
STOPSIGNAL指令设置将发送到容器的系统调用信号以退出 此信号可以是与内核的系统调用表中的位置匹配的有效无符号数,例如9,或SIGNAME格式的信号名,例如SIGKILL。
但对于管理此类信号的脚本,请参阅" Trapping signals in Docker containers"及其program.sh
来协调其他非PID1流程。
答案 1 :(得分:3)
使用以下标志启动容器:-t
& -i
:
docker run -it --name=<container_name> <image>:<tag>
这样您就可以使用ctrl+c
有关详细信息,请参阅此docker issue。