我正在尝试使用 dockerode 访问 Docker API。
我的目标是获取多节点集群中所有容器的容器数据。
似乎它docker.listContainers( {all: true } )
的范围仅返回在调用节点上运行的容器,在我的例子中是我的管理器节点。
https://docs.docker.com/engine/api/v1.37/#operation/ContainerList
我们如何使用 dockerode 获取 swarm 中所有容器的列表?
我们如何使用 dockerode 获取与服务关联的所有容器的列表?
在命令行中,你可以通过获取容器iddocker service ps <service_name>
来获取容器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 会返回管理节点上的预期数据。