この正確な質問は以前に要求されました。それはここです。そしてレディットから。しかし、実際の質問に対する答えはありません。
私のAtlasianサービスはDockerコンテナ内で実行されます。しかし、shutdown
コマンドを実行するとどうなるか知りたいです。所有者。コンテナを正常に終了しようとしていますか、それともすぐに終了しようとしていますか?とにかく、私はこれに関する実際のリソースを見つけることができないようです。それはおそらく私が最初にdockerに触れたからです。
次の状況を想像してください。
- コンテナを実行しています。
shutdown
終了コマンドを発行します。所有者 いいえ明示的に公開docker stop
このシナリオでは、Dockerは何をしますか?安全にshutdown
コマンドを実行し、他のタスクを実行する前にコンテナが正常に終了することを期待できますか?
私の場合は、Ubuntu Server 19.04インスタンスを使用していますが、問題はより一般的なシナリオ/主要ディストリビューションです。
ベストアンサー1
コンテナは、システムの他のすべてのプロセスと同様にSIGTERMを受け取る必要があります。
問題は、SIGTERMを取得することがコンテナの基本プロセス(ENTRYPOINTによって開始されたプロセス)であることです。コンテナがバイナリを起動するためにスクリプトを実行している場合は、exec
バイナリがコンテナプロセスになることが重要です。そうでなければ、シェルインタプリタはSIGTERMを受け取ります。これは通常、子プロセスに渡されません。
AFAIKはdocker stop
まずコンテナでSIGTERMを試してから10秒で終了することを期待しています。それ以外の場合はSIGKILLを送信します。したがって、コンテナが急速に停止した場合はdocker stop
問題ありません。