【问题标题】:Stop and Remove Container does not work sometimes停止和删除容器有时不起作用
【发布时间】:2020-01-01 15:58:32
【问题描述】:

我有一个 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 rm -f nostalgic_shirley

标签: shell docker sh


【解决方案1】:

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

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

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

 docker rm -f nostalgic_shirley

【讨论】:

  • 谢谢!我必须尝试睡眠选项!我仍然想知道为什么这是必要的,并且在它完成停止之前不等待下一个命令。
【解决方案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)

【讨论】:

  • 谢谢! a)这可能有效(问题可能仅在默认 10 秒后出现)b)我更新了我的问题,强制不起作用
猜你喜欢
  • 2018-01-03
  • 2019-08-11
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 2020-08-13
  • 1970-01-01
相关资源
最近更新 更多