我們有一個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實例化容器的工人創建了一個bash腳本,並且還啓動了bin /文件夾中的腳本文件。所有的工作人員都非常相似的結構和代碼,非常簡單,沒有大的代碼差異。但是,我們經歷了以下行爲:一些容器(每次隨機)拒絕停止並在幾小時後被移除。在容器內部,進程php bin/$workerName
仍然以PID 1運行。代碼中沒有任何東西可以阻止腳本完成。它隨機發生,仍然無法找到模式。你有什麼想法,爲什麼這可能會發生?
謝謝您的輸入Tarun。我一定會嘗試並回到你身邊。我從未在本地機器上遇到過這個問題。當我從命令行或通過使用Docker容器執行它們時,所有腳本每次完美無缺地完成其執行。 –
你的回答@ tarun-lalwani當場就是因爲它在一段時間後停止了容器。但是,我仍然有一個問題,爲什麼php進程(使用pid 1)沒有被殺死,因此沒有停止容器。問題可以被視爲解決。 –