shell - 停止和删除容器有时不起作用
问题描述
我有一个 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
,因为关机应该是优雅的
解决方案
如果您真的想在删除之前停止容器:
docker stop nostalgic_shirley
while [ ! -z "$(docker ps | grep nostalgic_shirley)" ]; do sleep 2; done
docker rm nostalgic_shirley
如果没有,只需使用“强制”选项将其删除(您甚至可以跳过停止):
docker rm -f nostalgic_shirley