我如何知道为什么我的Docker服务处于挂起状态?

我正在玩Docker Swarm ,并使用docker-compose.ymldocker-compose.yml docker deploy 。 所有的服务都被部署,除了一个,它处于挂起状态。 我已经添加了一个约束,该服务绑定到其中一个节点。 我的问题不是关于这个问题,而是关于如何解决问题。 Docker文档提到服务处于待处理状态的可能原因,但是这些都不适用(约束问题,资源泄漏)。

我可以在哪里看到docker群“思考过程”吗? 它在想什么?

编辑:应该已经更清楚,我正在使用新的,1.12引入,swarm选项。

我将解释如何在docker swarm模式下服务无法正常启动时进行debugging。

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

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

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

我希望这将是一些帮助。

docker run swarm有一个可以告诉你更多的--debug选项。

请参阅docker swarm issue 2341或docker issue 24982以查看用于debugging暂挂状态的选项。

例如:

 (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?....