如何使用consul后端启动docker swarm群集?
我在docker swarm init命令中看不到任何发现参数?还是docker swarm join命令?我成功跑了
docker swarm init ....
而不是
docker swarm join
在内部群发现机制上启动群集,但不建议用于生产。那我错过了什么?
答案 0 :(得分:1)
您正在运行较新的Swarm模式命令,但询问运行为容器的经典Swarm的用法,这是两个截然不同的事情。
Swarm模式将raft实现用于管理器状态,该实现不能与外部键/值存储交换。您使用列出的命令(docker swarm init
和docker swarm join
)运行swarm模式。 join命令消除了对外部节点发现数据库的需要。 https://docs.docker.com/engine/swarm/how-swarm-mode-works/nodes/
Classic swarm使用外部节点发现,默认使用不建议用于生产的docker hub令牌。要实现经典Swarm,您可以运行docker run swarm manage
,其中包含用于发布端口以访问管理器的选项以及用于发现群中节点的选项。与Swarm Mode或Kubernetes等编排工具相比,Classic Swarm与docker api的反向代理有更多共同之处。 https://docs.docker.com/swarm/reference/manage/
所以你的问题的答案是要么不使用Swarm模式命令而是运行经典的Swarm容器,或者如果你想要Swarm模式,不要尝试实现你自己的外部节点发现数据库,因为那不是一个选项。除非您对经典Swarm有特殊需求,否则我建议使用后者。