Dockerはシステムシャットダウンをどのように処理しますか?

Dockerはシステムシャットダウンをどのように処理しますか?

この正確な質問は以前に要求されました。それはここです。そしてレディットから。しかし、実際の質問に対する答えはありません。

私のAtlasianサービスはDockerコンテナ内で実行されます。しかし、shutdownコマンドを実行するとどうなるか知りたいです。所有者。コンテナを正常に終了しようとしていますか、それともすぐに終了しようとしていますか?とにかく、私はこれに関する実際のリソースを見つけることができないようです。それはおそらく私が最初にdockerに触れたからです。

次の状況を想像してください。

  1. コンテナを実行しています。
  2. shutdown終了コマンドを発行します。所有者 いいえ明示的に公開docker stop

このシナリオでは、Dockerは何をしますか?安全にshutdownコマンドを実行し、他のタスクを実行する前にコンテナが正常に終了することを期待できますか?

私の場合は、Ubuntu Server 19.04インスタンスを使用していますが、問題はより一般的なシナリオ/主要ディストリビューションです。

ベストアンサー1

コンテナは、システムの他のすべてのプロセスと同様にSIGTERMを受け取る必要があります。

問題は、SIGTERMを取得することがコンテナの基本プロセス(ENTRYPOINTによって開始されたプロセス)であることです。コンテナがバイナリを起動するためにスクリプトを実行している場合は、execバイナリがコンテナプロセスになることが重要です。そうでなければ、シェルインタプリタはSIGTERMを受け取ります。これは通常、子プロセスに渡されません。

AFAIKはdocker stopまずコンテナでSIGTERMを試してから10秒で終了することを期待しています。それ以外の場合はSIGKILLを送信します。したがって、コンテナが急速に停止した場合はdocker stop問題ありません。

おすすめ記事