我有一个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
,因为关机应该正常
答案 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