我正在使用本搬运工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
干杯不得不添加到码头虚拟机中运行的脚本,但它的工作方式就像它应该!谢谢 –