我在 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
我解决了我的问题
- 服务docker停止
- 转到 /var/run/docker 并删除与容器 ID 相关的所有目录
- 转到 /var/lib/docker 并删除与容器 ID 相关的所有目录
- 服务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
包含空目录的相同问题init
(state.json
看不到!)
答案4
遇到同样的问题。实例崩溃(原因不明)。Docker 和 ECS 代理。重新安装 docker 没有帮助。
对我们有用的方法:
- 手动终止 docker (kill pid)
- 删除containerd中的文件夹(为了以防万一,我们还直接删除了libconteinerd(/var/run/docker/libcontainerd/containerd)中同名的文件夹)
- 重启docker
- 启动 ecs
参见此处: https://github.com/docker/docker/issues/30984
系统重新启动并运行。