【发布时间】:2017-10-29 21:51:44
【问题描述】:
如何使用 consul 后端启动 docker swarm 集群?
我在 docker swarm init 命令中看不到任何发现参数?还是 docker swarm join 命令?我成功跑了
docker swarm 初始化 ....
比
码头工人群加入
在内部 swarm 发现机制上启动集群,但不建议用于生产。那我错过了什么?
【问题讨论】:
标签: docker docker-swarm consul
如何使用 consul 后端启动 docker swarm 集群?
我在 docker swarm init 命令中看不到任何发现参数?还是 docker swarm join 命令?我成功跑了
docker swarm 初始化 ....
比
码头工人群加入
在内部 swarm 发现机制上启动集群,但不建议用于生产。那我错过了什么?
【问题讨论】:
标签: docker docker-swarm consul
您正在运行较新的 Swarm 模式命令,但询问作为容器运行的经典 Swarm 的用法,这是两个截然不同的事情。
Swarm 模式对管理器状态使用 raft 实现,该实现不可与外部键/值存储交换。您使用列出的命令(docker swarm init 和 docker swarm join)运行 swarm 模式。 join 命令消除了对外部节点发现数据库的需要。 https://docs.docker.com/engine/swarm/how-swarm-mode-works/nodes/
经典 swarm 使用外部节点发现,默认使用不推荐用于生产的 docker hub 令牌。要实现经典的 Swarm,您可以运行 docker run swarm manage 并选择发布端口以访问管理器和发现 swarm 中的节点的选项。 Classic Swarm 与 docker api 的反向代理相比,与 Swarm Mode 或 Kubernetes 等编排工具有更多共同点。 https://docs.docker.com/swarm/reference/manage/
因此,您的问题的答案是要么不使用 Swarm 模式命令,而是运行经典的 Swarm 容器,或者如果您想要 Swarm 模式,则不要尝试实现您自己的外部节点发现数据库,因为这不是一个选项。除非您对经典 Swarm 有特殊需求,否则我会推荐后者。
【讨论】: