我正在使用docker-API模块访问服务列表和副本信息。它在群体模式和管理器节点上效果更好。但是,如果应用程序在工作程序节点上运行,则会出现以下错误 “意外-该节点不是群集管理器。请使用“ docker swarm init”或“ docker swarm join”将此节点连接到群集并重试”。以下是我的代码,
const Docker = require('node-docker-api').Docker
const docker = new Docker({ socketPath: '/var/run/docker.sock' })
const services = await docker.service.list()
是否可以通过为工作节点提供任何选项或权限来获得两个节点上的服务列表?还可以通过使用docker-compose或kubernetes运行应用程序来获得吗?
答案 0 :(得分:0)
以docker docs状态:
工人节点不参与Raft分布式状态, 安排决策,或使用群体模式HTTP API 。
可能的解决方案:
您可以考虑在群体拓扑中仅运行管理器节点。
或者,您可以为基于node.js的docker服务使用放置constraint --constraint node.role==manager
这样,您的服务容器将仅在服务于集群模式HTTP API的管理器节点上运行。