为什么退出的docker conatiner没有被删除?

时间:2017-07-12 14:06:10

标签: docker docker-container docker-image

文件名: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)

2 个答案:

答案 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