【问题标题】:How do I find out why my Docker service is in Pending state?如何找出我的 Docker 服务处于待处理状态的原因?
【发布时间】:2017-01-15 17:20:14
【问题描述】:

我正在玩Docker Swarm,并使用docker-compose.ymldocker deploy。所有服务都被部署,除了一个,它保持在 Pending 状态。我添加了一个约束,将该服务与其中一个节点联系起来。我的问题不是关于这个特定问题,而是更多关于如何排除故障。 Docker 文档提到了服务处于挂起状态的可能原因,但这些都不适用(约束问题、资源消耗)。

我可以在某处看到 docker swarm 的“思维过程”吗?它在想什么?

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

【问题讨论】:

    标签: docker docker-swarm


    【解决方案1】:

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

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

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

    如果任务有容器ID,启动容器后异常退出,请查看容器日志docker logs <container-id>

    我希望这会有所帮助。

    【讨论】:

    • 谢谢!在我的情况下,待处理意味着 docker swarm 找不到合适的节点(满足我的约束)
    【解决方案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?....
    

    【讨论】:

    • 我正在使用docker swarm init,所以我使用swarmkit 运行内部群管理器。命令行帮助显示没有 --debug 选项。我认为使用--debug 运行 docker 守护程序本身就可以解决问题。我要试试。
    • 还想补充一点,而不是将服务放入docker-compose.yml 文件中,手动运行它会很有启发性。
    猜你喜欢
    • 2014-06-21
    • 2018-03-31
    • 1970-01-01
    • 2018-11-19
    • 2021-10-12
    • 2021-12-31
    • 1970-01-01
    • 2013-07-23
    • 2014-09-20
    相关资源
    最近更新 更多