Docker 守护进程挂起-缺少容器状态文件?

Docker 守护进程挂起-缺少容器状态文件?

我在 AWS Linux 上运行 Docker 1.12.6。

所有docker命令都挂起。

AWS 实例今天早上崩溃了(仍然不知道原因)。重启不起作用,所以我停止并启动了实例。当我查看时,/var/log/docker我得到:

time="2017-01-16T10:46:18.829402768Z" level=info msg="libcontainerd: new containerd process, pid: 21697" 
time="2017-01-16T10:46:18.833508272Z" level=fatal msg="open /var/run/docker/libcontainerd/containerd/054f92393f757e0418b014ed1fa35673fbce2293de43e42153f4e10ec4910c77/state.json: no such file or directory"

容器目录存在,但只包含一个空init目录。随机搜索其他容器也会出现同样的情况。

我认为文件丢失是导致挂起的原因。我该如何恢复?

编辑:

最后删除然后重新安装,收到消息:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

启动了Docker 服务,现在它又挂了。

答案1

我解决了我的问题

  1. 服务docker停止
  2. 转到 /var/run/docker 并删除与容器 ID 相关的所有目录
  3. 转到 /var/lib/docker 并删除与容器 ID 相关的所有目录
  4. 服务docker启动

答案2

@Moreno 的答案对我有用,但有一点不同:

  • 停止docker守护进程(sudo service docker stop

  • 删除containerd中的文件夹(为了以防万一,我们还直接删除了libconteinerd(/var/run/docker/libcontainerd/containerd)中同名的文件夹)

  • 启动 docker 守护进程

答案3

我遇到了同样的问题。在花了相当多的时间解决这个问题之后,我不得不回滚到可以正常工作的旧 AMI,直到找到解决方案。最新的 ECS 代理 (1.13.1) 几天前发布 - 我想知道这是否是我们的问题。

概述:

  • Docker 1.12.6
  • ECS Agent 1.13.1

实例启动后,所有docker命令都挂起。检查/var/log/docker显示:

level=info msg="libcontainerd: new containerd process, pid: 21687" 
level=fatal msg="open /var/run/docker/libcontainerd/containerd/{{CONTAINER_HASH}}/state.json: no such file or directory"

libcontainerd包含空目录的相同问题initstate.json看不到!)

答案4

遇到同样的问题。实例崩溃(原因不明)。Docker 和 ECS 代理。重新安装 docker 没有帮助。

对我们有用的方法:

  • 手动终止 docker (kill pid)
  • 删除containerd中的文件夹(为了以防万一,我们还直接删除了libconteinerd(/var/run/docker/libcontainerd/containerd)中同名的文件夹)
  • 重启docker
  • 启动 ecs

参见此处: https://github.com/docker/docker/issues/30984

系统重新启动并运行。

相关内容