2017-11-28 12 views
0

私はElasticSearchの複数のバージョンを同時に実行しようとしています。ここに私の命令があります:dockerのElasticSearch - 2番目のインスタンスが最初のインスタンスを終了します

docker run -d --rm -p 9250:9200 -p 9350:9300 --name es_5_3_3_integration -e "xpack.security.enabled=false" docker.elastic.co/elasticsearch/elasticsearch:5.3.3 
docker run -d --rm -p 9251:9200 -p 9351:9300 --name es_5_4_3_integration -e "xpack.security.enabled=false" docker.elastic.co/elasticsearch/elasticsearch:5.4.3 

最初のドッカーが起動します。 2番目のドッカーは始動しますが、1番目のドッカーを殺すことになります。私が-dなしでそれを実行すると、なぜドッカーが停止したのかについてUIに何らの情報が戻ってきません。

+1

ドッカーにどのくらいのRAMを与えましたか? ES 5はデフォルトで2GBのヒープで始まります(jvm.optionsを参照)。もしあなたのDockerが少なくとも4GBを持っていなければ、最初のインスタンスは実際に殺されます。 – Val

+0

私はカスタムを何も指定しませんでした。 – jhilden

+0

それはおそらくそれです。どのように私はドッカーに500Mのメモリしか使わないように指示できますか? – jhilden

答えて

0

デフォルトでは、ドッカーのESは2Gのメモリを使用しようとします。だから、2人のドッカーが私のマシンにはなかった4Gのメモリを占有しようとしていました。

ソリューション:

docker run -d --rm -p 9250:9200 -p 9350:9300 --name es_5_3_3_integration -e "xpack.security.enabled=false" -e ES_JAVA_OPTS="-Xms200m -Xmx200m" docker.elastic.co/elasticsearch/elasticsearch:5.3.3 
docker run -d --rm -p 9251:9200 -p 9351:9300 --name es_5_4_3_integration -e "xpack.security.enabled=false" -e ES_JAVA_OPTS="-Xms200m -Xmx200m" docker.elastic.co/elasticsearch/elasticsearch:5.4.3 
docker run -d --rm -p 9252:9200 -p 9352:9300 --name es_5_5_3_integration -e "xpack.security.enabled=false" -e ES_JAVA_OPTS="-Xms200m -Xmx200m" docker.elastic.co/elasticsearch/elasticsearch:5.5.3 
docker run -d --rm -p 9253:9200 -p 9353:9300 --name es_5_6_4_integration -e "xpack.security.enabled=false" -e ES_JAVA_OPTS="-Xms200m -Xmx200m" docker.elastic.co/elasticsearch/elasticsearch:5.6.4 

@valにありがとう:各インスタンスは、以下のスイッチ-e ES_JAVA_OPTS="-Xms200m -Xmx200m"

のフルを使用して200MBために撮ってみました、4同時ドッカーズの作業のコマンドは、ESメモリの量を制限コメントの中で本当にこの質問に答えた人。

+0

それはあなたのために働いてうれしい。あなたはESのためのヒープの200MBだけで遠くに行きませんが;-) – Val

0

メモリに問題がなければ、OOMKilledOOM)だったかどうかを確認できます。

まず、コンテナの終了コードが137 =(128 + 9)コンテナにSIGKILLを受信したかどうかを確認します。
あなたがdocker ps -aまたは

docker inspect --format='{{.State.ExitCode}}' $INSTANCE_ID 

でそれをテストすることができますそして、あなたがして、コンテナの状態を確認することができます:それはtrueを返す場合

docker inspect --format='{{.State.OOMKilled}}' $INSTANCE_ID 

、それがOOMの問題でした。

さらなる詳細はhttps://docs.docker.com/engine/reference/run/#user-memory-constraintsです。
エキス:アウト・オブ・メモリ (OOM)エラーが発生した場合、デフォルトで

、カーネルは、容器内のプロセスを殺します。この動作を変更するには、 --oom-kill-disableオプションを使用します。 -m/- memoryオプションも設定したコンテナでのみ、OOMキラーを無効にしてください。 -mフラグが に設定されていないと、ホストのメモリーが不足し、メモリを解放するためにホストのシステム・プロセスが終了することがあります( )。

関連する問題