如何找出Docker服务处于挂起状态的原因?

时间:2017-01-13 18:41:17

标签: docker docker-swarm

我正在玩Docker Swarm,并使用docker-compose.yml docker deploy。除了一个处于挂起状态的服务之外,所有服务都会被部署。我添加了一个约束,将此服务绑定到其中一个节点。我的问题不是关于这个特定的问题,而是关于如何排除故障的更多问题。 Docker文档提到了服务处于挂起状态的可能原因,但这些都不适用(约束问题,资源排放)。

我可以在某个地方看到docker swarm'思考过程'吗?它在想什么?

编辑:应该更明确地说我正在使用新的1.12引入的swarm选项。

2 个答案:

答案 0 :(得分:29)

我将解释如何在docker swarm模式下按预期启动服务时调试。

首先,获取docker service ps <service-name>的任务ID。

接下来,使用docker inspect <task-id>检查元数据非常有用。特别是,容器启动之前的错误消息位于状态字段中,然后再次确认它是否以预期参数启动。

如果任务具有容器ID,则在启动容器后异常退出,因此请使用docker logs <container-id>

检查容器的日志

我希望这会有所帮助。

答案 1 :(得分:2)

docker run swarm有一个--debug选项,可以告诉您更多信息。

请参阅docker swarm issue 2341docker issue 24982以查看用于调试待处理状态的选项。

例如:

(unknown): 192.168.99.106:2375(node2 ip)
└ ID:
└ Status: Pending
└ Containers: 0
└ Reserved CPUs: 0 / 0
└ Reserved Memory: 0 B / 0 B
└ Labels:
└ Error: Cannot connect to the Docker daemon. Is the docker daemon running on this host?....