2017-09-29 3 views
0

Dockerサーバー「Dockerバージョン17.03.0-ce、build 60ccb22」を使用しています。私たちには10人ほどの労働者がいます。それぞれの人は、完了して退場するのに数秒かかる本当に簡単な作業を行います。私たちは、すべての人がドッカーコンテナを始めると決めました。スクリプトが終了すると、コンテナは停止して取り除かれました。詳細は何ですか、そう実行しているとの契約をcrontabファイル、我々はフラグで、コンテナをインスタンス化し、すべての労働者のためのbashスクリプトを作成しても--rmと-dとは、スクリプトファイルを起動するのbin /フォルダ内のスクリプトが実行された後にDockerコンテナが停止せずに削除される

#! /bin/sh 
f=`basename $0` 
workerName=${f%.*} \\name of the bash script without the part after the . 

//We link with the Docker host the folder of the worker and a log file that is going to be used for monitoring from outside the container. 
docker run --rm -d --name $workerName -v `cat /mnt/volume-fra1-05/apps/pd-executioner/master/active_version`:/var/www/html -v /mnt/volume-fra1-06/apps/$workerName.log:/var/www/html/logs/$workerName.log iqucom/php-daemon-container php bin/$workerName 

echo `date` $0 >> /var/log/crontab.log 

ので、 --rmと-dフラグを付けてコンテナをインスタンス化し、bin /フォルダー内のスクリプトファイルを開始するすべてのワーカー用のbashスクリプトを作成しました。すべての労働者は構造とコードに非常によく似ていて、本当にシンプルで、大きなコードの違いはありません。しかし、私たちは次のような動作を経験しています。いくつかのコンテナ(毎回ランダムなもの)は、何時間も停止しても何時間も後に取り除かれません。コンテナの内部では、プロセスphp bin/$workerNameはまだPID 1で実行されています。スクリプトの終了を止める無限ループのようなものはありません。それはランダムに起こり、それでもパターンを見つけることはできません。なぜこのようなことが起こっているのか考えていますか?

答えて

0

これは何とかあなたのPHPスクリプトに関係するいくつかの問題があります。あなたは確信しているので、あなたが

ドッキングウィンドウの実行にあなたのコンテナのコマンドを変更することができますする必要があり、その後240secsとさせて頂きます後しかし、それがタイムアウトすると仮定されて--rm -d --name $ workerName -v cat /mnt/volume-fra1-05/apps/pd-executioner/master/active_version:は/ var/www /のhtml -v /mnt/volume-fra1-06/apps/$workerName.log:/var/www/html/logs/$workerName.log iqucom/php-daemon-containerタイムアウト240 php bin/$ workerName

これは、タイムアウト後にコンテナが終了しても終了しないことを確認します。

+0

入力していただきありがとうございます。私は間違いなくそれを試し、あなたに戻ってきます。ローカルマシンでこの問題に直面したことはありません。すべてのスクリプトは、コマンドラインから実行するたびに、またはDockerコンテナの使用を通じて、完璧に実行を完了します。 –

+0

あなたの答え@ tarun-lalwaniはしばらくしてからコンテナを止めるので、現場にいました。しかし、私はまだPHPプロセス(pid 1)が殺されていないので、コンテナを止めないという根本的な問題があります。問題は解決されたとみなすことができる。 –

関連する問題