停止并删除容器有时不起作用

时间:2019-08-28 12:12:07

标签: shell docker sh

我有一个shell脚本.sh来停止和删除我正在运行的容器,该容器通常工作得很好。但是docker rm命令似乎是在docker stop完成之前执行的十分之一,因此会引发错误,表明容器仍在运行。我该如何防止该错误?

docker stop nostalgic_shirley
docker rm nostalgic_shirley 

输出

nostalgic_shirley
nostalgic_shirley
Error response from daemon: You cannot remove a running container xxxx. Stop the container before attempting removal or force remove

如果我然后再次尝试使用docker rm nostalgic_shirley,则效果很好。

我不应该使用docker stop --force,因为关机应该正常

2 个答案:

答案 0 :(得分:2)

在容器没有停止的时候,您是否有其他进程/用户登录到容器? 既然您提到过,这并不是经常发生的事情:您是否检查过环境状态,例如CPU利用率,内存等参数?

您尝试过

a)使用-t标志覆盖容器

使用“ docker stop”命令的“ -t”标志

-t, --time=10
       Seconds to wait for stop before killing it

b)使用“ docker rm”命令的“ -f”标志

-f, --force[=false]
       Force the removal of a running container (uses SIGKILL)

答案 1 :(得分:2)

如果您真的想在删除之前停止容器:

 docker stop nostalgic_shirley
 while [ ! -z "$(docker ps | grep nostalgic_shirley)" ]; do sleep 2; done
 docker rm nostalgic_shirley

如果没有,只需使用“强制”选项将其删除(您甚至可以跳过停止):

 docker rm -f nostalgic_shirley