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で実行されています。スクリプトの終了を止める無限ループのようなものはありません。それはランダムに起こり、それでもパターンを見つけることはできません。なぜこのようなことが起こっているのか考えていますか?
入力していただきありがとうございます。私は間違いなくそれを試し、あなたに戻ってきます。ローカルマシンでこの問題に直面したことはありません。すべてのスクリプトは、コマンドラインから実行するたびに、またはDockerコンテナの使用を通じて、完璧に実行を完了します。 –
あなたの答え@ tarun-lalwaniはしばらくしてからコンテナを止めるので、現場にいました。しかし、私はまだPHPプロセス(pid 1)が殺されていないので、コンテナを止めないという根本的な問題があります。問題は解決されたとみなすことができる。 –