Docker修剪陷入"修剪操作已经在运行"

Mar*_*ika 18 docker docker-swarm

docker system prune昨天运行命令,花了一些时间,然后我的SSH会话因不同原因断开连接.

不幸的是我现在要:

Error response from daemon: a prune operation is already running.

显然有锁和修剪命令不再运行.

有人知道如何在不停止和移除所有容器的情况下移除锁定吗?

编辑:在回购中创建了一个问题:https://github.com/moby/moby/issues/36447

小智 13

重新启动 docker 对我有用。


小智 9

当容器未响应 docker 时,似乎会发生此问题。

这是我修复它的方法:

  1. 首先,使用以下命令找到无响应的容器: sudo docker inspect %CONTAINER ID%
  2. 如果容器没有响应,该inspect命令将不会返回任何内容。
  3. 一个%CONTAINER ID%没有响应的已被识别,找到其对应的pid: ps -aux | grep %CONTAINER ID%
  4. 应该有一行看起来像:

root 14931 0.0 0.0 7648 428 ? Sl Sep13 0:26 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/3b0d4cba3f63a71fda99c76f3f777a156056e559fb034da4ed59c0aa340e5669 -address /var/run/docker/containerd/docker-containerd.sock -containerd-binary /usr/bin/docker-containerd -runtime-root /var/run/docker/runtime-runc

  1. 然后,用 kill -9 %PID%

提示 1:可能有一个或多个容器没有响应

Tip 2:为了避免宕机,可以将没有响应的容器对应的服务扩容docker service scale ...

(我的回答补充了 dparkar 的回答。)


Hos*_*com 5

就我而言,它并没有被卡住,只是花了很长时间才能完成。完成后删除了 3500 张图像!

  • 我遇到了同样的问题 - 您可以在单独的终端会话中运行“docker system info”来检查容器/图像的数量是否正在下降。 (7认同)

dpa*_*kar 1

github问题的工作解决方案:

doublemcz 于 3 月 14 日发表评论

我可以确认修剪是由于容器无响应而卡住的。kill -9 PROCESS_ID当我首先通过我获得的进程 ID杀死容器时 ps aux | grep docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/CONTAINER_ID

问题是你需要知道有一个容器在 docker 上没有响应:-/ 容器工作(即 node.js 工作正常),但只是 docker 甚至无法检查它。

顺便说一句,这个容器甚至不应该存在,因为我们使用 :latest 镜像运行 docker service update... 。Docker 创建了另一个容器,但它没有被杀死。因此有两个正在运行的容器具有两个不同的版本。