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

Sch*_*nge 4 shell sh docker

我有一个 shell 脚本 .sh 来停止和删除正在运行的容器,通常效果很好。但十分之一的情况是该docker rm命令似乎在完成之前就已执行docker stop,因此会引发容器仍在运行的错误。我可以做什么来防止该错误?

docker stop nostalgic_shirley
docker rm nostalgic_shirley 
Run Code Online (Sandbox Code Playgroud)

输出

nostalgic_shirley
nostalgic_shirley
Error response from daemon: You cannot remove a running container xxxx. Stop the container before attempting removal or force remove
Run Code Online (Sandbox Code Playgroud)

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

我不应该使用docker stop --force,因为关闭应该是优雅的

Edu*_*yer 6

如果您确实想在删除之前停止容器:

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

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

 docker rm -f nostalgic_shirley
Run Code Online (Sandbox Code Playgroud)