我们正在构建一个小型集群,一个(奇怪的)要求是在一台机器上设置所有内容,以后其他机器可以加入。
我设立了领事:
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。
这是预期的行为吗?如果没有,我做错了什么?
答案 0 :(得分:1)
在看到Docker Machine创建Swarm集群的方式,以及使用集成到Docker v1.12.0中的Swarm后,我想发布更新。 Swarm master通过运行两个容器,一个代理和一个主服务器来加入Swarm集群。
答案 1 :(得分:0)
至于我,我使用Swarm Master作为Consul服务器。 This answer可能会对您有所帮助。然后,为了回答,Swarm Master不会作为单个节点集群加入。
您无法在单个节点上部署Swarm。这不是它的用途,不能那样工作。 Swarm turns a pool of Docker hosts into a single, virtual Docker host ,因此如果Docker主机池包含零主机......没有Docker代理来托管容器。