私は内部にbashスクリプトだけを持ったドッカーubuntuコンテナを実行しています。メインスクリプト内終了時にドッカーのexecがnohupプロセスを強制終了するのはなぜですか?
docker exec -it 0b3fc9dd35f2 ./main.sh
私は、これは長時間実行されるアプリケーションであるとして、nohupを持つ別のアプリケーションを実行したい:
#!/bin/bash
nohup ./java.sh &
#with this strange sleep the script is working
#sleep 1
echo `date` finish main >> /status.log
javaの私はそのようなドッキングウィンドウの幹部とそのコンテナ内部の私のアプリケーションを起動したいです.SHスクリプトは(簡単にするために、それはダミーのスクリプトです)以下の通りである:
#!/bin/bash
sleep 10
echo `date` finish java >> /status.log
問題がjava.shがすぐにドッキングウィンドウの幹部が戻った後に殺されていることです。問題はなぜですか?
私が知る唯一の解決策は、nohupの起動後に最初のスクリプトにダミーのsleep 1
を追加することです。 2番目のプロセスがうまく動作しています。それがなぜそうなのかあなたは何か考えていますか?
[EDIT]
第2の解決策は、単に睡眠前にいくつかのecho
またはtrap
コマンドjava.sh
にスクリプトを追加することです。それはうまく動作します。残念ながら、私はjavaプロセスを持っているこのスクリプトの代わりにこの回避策を使用することはできません。
にそれを確認した容器内
これを実行します'docker run'を実行していて、' 'CMD''と' 'ENTRYPOINT''をDo ckerfile – user2915097
私はすでに異なるプロセスでコンテナを実行しています。ドッカーのエグゼクティブで、私は第二のものを始めたいと思います。これは継続的な統合シナリオなので、1つのコンテナにさらに多くのプロセスが必要です。 –