2016-11-15 3 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で(ドッカー1.9+で)STOPSIGNALを使用することを検討できます。

STOPSIGNAL命令は、コンテナに送信されるシステムコール信号を終了するように設定します。
このシグナルは、カーネルのsyscallテーブル内の位置(例えば9)に一致する有効な符号なしの数字、またはSIGKILLのようなSIGNAMEの形式のシグナル名になります。

しかし、このような信号を管理するスクリプトについては、他の非PID1プロセスを編成する「Trapping signals in Docker containers」とそのprogram.shを参照してください。

0
フラグを使用してコンテナを起動し

-t & -i

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

これはctrl+c

を使用して終了することができるようになります詳細は、このdocker issueを参照してください。

+1

最後に_/bin/bash_を追加すると、bashコマンドラインが開きます。 – kimy82

関連する問題