我有一个 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,因为关闭应该是优雅的
如果您确实想在删除之前停止容器:
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)