2017-04-01 4 views
0

私はDockerでElasticsearchをローカルデベロッパーに使用しようとしています。コンテナが見つかると、docker stopが送信されると、コンテナがデフォルトの10秒間ハングした後、ドッカーが強制的にコンテナを強制終了します。ここでの私の前提は、ESがPID 1でないか、または他のサービスがすぐにシャットダウンするのを防ぐということです。Elasticsearch Docker stopがSIGKILLを無視しているようです

誰かがこれを拡張したり、なぜこれがより正確に起こっているのかを知りたいのであれば、私は不思議です。私は数多くのテストを実行しています。シャットダウンまで10秒以上かかるのは、他のコンテナが1-2秒後にシャットダウンしたときです。

答えて

1

10秒間待たない場合は、docker stopの代わりにdocker killを実行できます。 -tオプションを使用してdocker stopのタイムアウトを調整することもできます。 docker stop -t 2 $container_idは、デフォルトの10の代わりに2秒間だけ待機します。

なぜsigkillを無視しているのかは、実行中の画像(elasticsearchに複数の画像があります)によって異なる場合があります。しかし、pid 1が/ bin/shや/ bin/bashのようなシェルであれば、シグナルは通過しません。 pid 1がelasticsearchプロセスの場合、シグナルを無視するか、完全にクリーンアップしてシャットダウンするまでに10秒間を要し​​ません。

+0

ありがとうございました。ええ、これは、私が試したすべてのESイメージを悩ませている問題だと思います。私はそれがクリーンアップ時間と関係していると考えています。ほとんどの画像は 'CMD'がESまたはKibanaを開始するように設定されています。 '-t'が最適です。 – Fluidbyte

+0

私が見た画像のほとんどはjson形式の 'CMD'(シェルの代わりにexecで起動)を使用し、' CMD'がシェルスクリプトを実行した場合、スクリプトの最後の行は 'exec'でしたESを同じPIDとして起動します。これらの2つの部分は、シェルがpid 1であることを避けるために必要です。 – BMitch

関連する問題