文件名:dockerHandler.sh
#!/bin/bash
set -e
to=$1
shift
cont=$(docker run -d "$@")
code=$(timeout "$to" docker wait "$cont" || true)
docker kill $cont &> /dev/null
docker rm $cont
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
但每当我在运行docker镜像后检查docker容器状态时,它会给出已退出的docker容器列表。
命令:docker ps -as
因此,删除那些已退出的容器,我在命令
下手动运行rm $(docker ps -a -f status = exited -q)
答案 0 :(得分:1)
您应该将标记--rm
添加到docker命令:
来自Docker的男人:
➜ ~ docker run --help | grep rm
--rm Automatically remove the container when it exits
答案 1 :(得分:0)
删除了行
docker kill $ cont&>的/ dev / null的
码头工人rm $ cont
码头记录$ cont | sed's / ^ / \ t /'
并在Mac中使用gtimeout而不是超时,它运行正常。
在Mac上安装gtimeout:
Installing CoreUtils
brew install coreutils
In line 8 of DockerTimeout.sh change timeout to gtimeout