【发布时间】:2021-01-22 23:04:51
【问题描述】:
我正在尝试使用 dockerode 访问 Docker API。
我的目标是获取多节点集群中所有容器的容器数据。
似乎docker.listContainers( {all: true } ) 的范围仅返回在调用节点上运行的容器,在我的例子中是我的管理器节点。
https://docs.docker.com/engine/api/v1.37/#operation/ContainerList
-
我们如何使用 dockerode 获取 swarm 中所有容器的列表?
-
我们如何使用 dockerode 获取与服务关联的所有容器的列表?
在命令行可以通过docker service ps <service_name>获取容器id,获取容器id,然后调用inspect on container。
$ 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 会返回管理节点上的预期数据。
【问题讨论】:
标签: docker docker-api dockerode