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

Docker Swarm Mode - Show containers per node

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

我已经设置了一个有两个节点的群,我在管理器上有一个堆栈 运行,而我要在工作器上实例化新节点(不在服务中,而是作为独立的容器)。

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

我已阅读 which led me to run containers with the -e option specifying constraint:Role==worker, constraint:node==<nodeId> or constraint:<custom label>==<value>, and this github issue from 2016 的答案显示 docker info 命令仅输出我需要的信息(即在任何给定时间每个节点上有多少个容器),但我不是确定这是否是 独立 swarm 的特性,因为 docker info 只有节点数,但 没有每个节点的详细信息。我也尝试过 docker -D info.

具体来说,我需要:

Swarm 命令只会 care/show service-related 个容器。如果您使用 docker run 创建一个,那么您将需要使用 ssh node2 docker ps 之类的东西来查看该节点上的所有容器。

我建议您在 Swarm 中尽最大努力将所有容器作为服务的一部分。如果您需要在 nodeX 上 运行 的容器,则可以使用标签和约束创建具有 "node constraint" 的服务。在这种情况下,您可以将该服务的单个副本限制为节点的主机名。

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

要从任何 swarm 管理器查看节点上的所有任务:

docker node ps <nodename_or_id>