Docker Swarm模式 - 显示每个节点的容器

时间:2018-03-05 09:17:48

标签: docker docker-swarm docker-swarm-mode

我正在使用Docker版本17.12.1-ce。

我已经设置了一个包含两个节点的swarm,并且我在管理器上运行了一个堆栈,而我将在worker上实例化新节点(不在服务中,而是作为独立容器)。

到目前为止,我一直无法找到一种方法来专门在worker上实例化容器,和/或验证新容器是否实际部署在worker上。

我已经阅读了this question的答案,这导致我使用-e选项运行容器,指定constraint:Role==workerconstraint:node==<nodeId>constraint:<custom label>==<value>,此{ {3}}显示docker info命令只输出我需要的信息(即在任何给定时间每个节点上有多少个容器),但是我不确定这是否是 <的一个特性em>独立 swarm,因为docker info只有节点数,但没有每个节点的详细信息。我也试过了docker -D info

具体来说,我需要:

  • 手动指定将独立容器部署到哪个节点(即与服务无关)。
  • 检查容器是否在特定的群集节点上运行,或检查节点上正在运行的容器数。

1 个答案:

答案 0 :(得分:2)

Swarm命令只关心/显示与服务相关的容器。如果您使用docker run创建一个,那么您需要使用ssh node2 docker ps之类的内容来查看该节点上的所有容器。

我建议您在Swarm中尽力将所有容器作为服务的一部分。如果您需要在nodeX上运行容器,那么您可以使用&#34;节点约束来创建服务&#34;使用标签和约束。在这种情况下,您可以将该服务的单个副本限制为节点的主机名。

docker service create --constraint Node.Hostname==swarm2 nginx

要查看来自任何群集管理器的节点上的所有任务:

docker node ps <nodename_or_id>