2016-11-15 21 views
4

我正在嘗試創建碼頭集裝箱。它應該永遠在後臺運行。但是每當我按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事件。任何線索如何解決這個問題。

回答

4

您可以考慮在您的Dockerfile中使用(使用docker 1.9+)STOPSIGNAL

STOPSIGNAL指令設置將發送到容器退出的系統調用信號。
該信號可以是與內核的syscall表中的位置(例如9)匹配的有效無符號數字,也可以是SIGNAME格式的信號名稱,例如SIGKILL。

但對於腳本管理這樣一個信號,請參閱「Trapping signals in Docker containers」及其program.sh來協調其他非PID1過程。

0

與標誌啓動容器:-t & -i

docker run -it --name=<container_name> <image>:<tag> 

這將使你使用ctrl+c

更多信息請參閱本docker issue退出。

+1

我會在最後添加_/bin/bash_,然後打開bash命令行。 – kimy82