代码之家  ›  专栏  ›  技术社区  ›  Yannic Bürgmann

停止容器时的不同行为(docker stop vs drain)

  •  1
  • Yannic Bürgmann  · 技术社区  · 8 年前

    由于某些原因,当我使用时,服务需要在不同的节点上尝试两次启动 docker service update --availability drain myHost 在以前运行此服务的主机上。

    docker stop containerId 服务将在第一次尝试时启动。

    我不认为docker需要多次尝试才能启动我们的服务,但是当一个节点处于排水模式时,停止容器必须有不同的行为,而docker stop则是不同的,我希望找到这一差异将指引我找到服务问题的正确方向。

    1. 初始情况

    节点1(活动):

    节点2:

    • 服务2正在运行
    1. docker service update --availability drain Node2

    节点1(活动):

    • Service2正在运行(两次尝试启动后)

    节点2(漏极):

    1. docker service update --availability active Node2

    • 服务1正在运行
    • Service2正在运行(由于没有重新平衡,因此没有任何更改)

    节点2:

    1. (onNode1)$: docker stop serivce2

    • 服务1正在运行

    节点2:

    • 服务2正在运行(第一次尝试后)

    当通过添加约束强制服务不在节点上运行时,这种行为是相同的。

    节点1(活动):

    节点2:

    1. docker service update --constraint-add "node.hostname != Node2" Service2

    • 服务1正在运行
    • Service2正在运行(两次尝试启动后)

    1. docker service update --constraint-rm "node.hostname != Node2" Service2

    • 服务1正在运行

    节点2(漏极):

    1. docker service update --constraint-add "node.hostname != Node1" Service2

    • 服务1正在运行

    节点2(漏极):

    我找不到任何记录在案的差异,所以我希望在stackoverflow上有人知道docker在做什么。

    0 回复  |  直到 6 年前