Swarm主节点应该作为单节点集群中的节点join吗?

我们正在build立一个小型集群,一个(奇怪的)要求是把所有东西都放在一台机器上,其他机器可以在未来join。

我设立了领事:

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.

当我通过以下方式将主节点join到群集中时:

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

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

请注意, <ip_here>指的都是机器的相同IP地址。

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

在看到Docker Machine创buildSwarm集群的方式,以及使用集成到Docker v1.12.0的Swarm之后,我想发布一个更新。 Swarm master通过运行两个容器,一个代理和一个主服务器来joinSwarm集群。

至于我,我使用Swarm Master作为Consul服务器。 这个答案可能对你有帮助。 然后,回答Swarm Master不会作为单个节点集群join。

您不能在单个节点上部署Swarm。 这不是它的用途,不能这样工作。 Swarm 将Docker主机池变成单个虚拟Docker主机 ,所以如果Docker主机池包含零个主机…没有Docker代理主机容器。