首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用dockerode或dockerode在多主机群上模拟“码头服务ps”?

如何使用dockerode或dockerode在多主机群上模拟“码头服务ps”?
EN

Stack Overflow用户
提问于 2021-01-22 14:26:47
回答 1查看 246关注 0票数 0

我试图使用dockerode来访问Docker。

我的目标是获取多节点群中所有容器的容器数据。

docker.listContainers( {all: true } )的作用域似乎只返回在调用节点上运行的容器,在我的例子中是manager节点。https://docs.docker.com/engine/api/v1.37/#operation/ContainerList

  1. 我们如何使用码头获得一群中所有容器的列表?

  1. 如何使用dockerode获取与服务关联的所有容器的列表?

在命令行上,您可以使用docker service ps <service_name>获取容器id,然后调用容器检查。

代码语言:javascript
复制
$ docker service ps classifier_8
ID                  NAME                IMAGE                                 NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
m1x8e2w5dyvr        classifier_8.1      scuba:qa-latest  master         Running             Running 26 minutes ago
8a04d2e18ee9        classifier_8.2      scuba:qa-latest  worker-0         Running             Running 26 minutes ago
a6b48751780b        classifier_8.3      scuba:qa-latest  worker-1         Running             Running 26 minutes ago

$ docker inspect a6b48751780b
[{...}]

即使是调用dockerode.getContainer(a6b48751780b)的简单示例也会返回404。调用m1x8e2w5dyvr将返回预期的数据,作为其在manager节点上的数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-22 15:04:51

当使用GET /containers/json端点时,docker只返回本地运行的容器,因此当试图在另一个码头引擎上返回容器时,预期会有404。群管理器只能返回整个聚类的群对象。常规容器不是成群的对象。

当与群模式交互时,您可以列出群服务和群任务。GET /servicesGET /tasks.因为任务确实是一个群模式对象,所以您可以从任何管理器中列出整个群集的所有任务。

然后,任务继续在群中的各个节点上创建容器。如果要在整个群集中列出容器,则必须在每个节点上直接使用GET /containers/json API端点。

这些API端点类似于以下命令:

  • GET /containers/json - docker container ls
  • GET /services - docker service ls
  • GET /tasks?filter=... - docker service ps ... (关于正确的过滤语法,请参阅文档)

为了提高可读性,我在Docker的上下文中而不是在任何一个docker库的上下文中回答了这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65847001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档