Swarm Master 应该作为节点加入单节点集群吗?

Should Swarm Master Join As Node in a Single Node Cluster?

我们正在构建一个小型集群,一个(奇怪的)要求是在一台机器上设置所有内容,将来其他机器可以加入。

我设置了领事:

docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap

和大师一起:

docker run -d -p 4000:4000 swarm manage -H :4000 --advertise <ip_here>:4000 consul://<ip_here>:8500

其中 docker 是 运行 并且:

sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

docker -H :4000 info 在此阶段将节点列为 0,我不能 运行 任何带有 docker -H :4000 run <image> 的图像,因为 No healthy node available in the cluster.

当我将主节点加入集群时:

docker run -d swarm join --advertise=<ip_here>:2375 consul://<ip_here>:8500

然后docker -H :4000 info列出节点为1,我可以运行个容器。

请注意,<ip_here>均指本机同一个ip。

这是预期的行为吗?如果不是,我做错了什么?

至于我,我使用Swarm Master作为Consul服务器。 This answer 可能对你有帮助。那么,回答一下,Swarm Master并没有作为单节点集群加入。

您不能在单个节点上部署 Swarm。那不是它的用途,也不能那样工作。 Swarm turns a pool of Docker hosts into a single, virtual Docker host,所以如果 Docker 主机池包含零个主机...没有 Docker 代理到主机容器。

看到 Docker 机器创建 Swarm 集群的方式,以及使用集成到 Docker v1.12.0 中的 Swarm 后,我想 post 更新。 Swarm master 通过 运行 两个容器,一个 agent 和一个 master 加入 Swarm 集群。