我正在使用本搬運工issue找到的代碼基本上啓動一個容器中運行的20秒內的處理,並且如果完成/的過程沒有完成 X量殺死在容器中的無限過程/ 未能執行/超時無論容器是否被殺死。多克爾後的時間
我使用目前的代碼是這樣的:
#!/bin/bash
set -e
to=$1
shift
cont=$(docker run -d "[email protected]")
code=$(timeout "$to" docker wait "$cont" || true)
docker kill $cont &> /dev/null
echo -n 'status: '
if [ -z "$code" ]; then
echo timeout
else
echo exited: $code
fi
echo output:
# pipe to sed simply for pretty nice indentation
docker logs $cont | sed 's/^/\t/'
docker rm $cont &> /dev/null
這幾乎是完美的。然而,如果你運行一個無限的過程(例如這條巨蟒無限循環):
while True:
print "inifinte loop"
整個系統果醬和應用程序崩潰後,閱讀了一下,我認爲這與STDOUT緩衝區有關,但我絕對不知道這是什麼意思?
嘿,我不知道在哪裏添加上面的代碼到我的代碼,任何想法? –
在腳本中的'set -e'之後添加'ulimit'。由於docker可能需要將大文件用於除日誌以外的其他內容,因此可能需要增加限制。 – meuh
乾杯不得不添加到碼頭虛擬機中運行的腳本,但它的工作方式就像它應該!謝謝 –