在创build之后将Docker Machine添加到Swarm集群

Docker Swarm集群可以创build为:

docker-machine create \ -d virtualbox --virtualbox-disk-size "5000" \ --swarm --swarm-master \ --swarm-discovery="consul://$(docker-machine ip consul-machine):8500" \ --engine-opt="cluster-store=consul://$(docker-machine ip consul-machine):8500" \ --engine-opt="cluster-advertise=eth1:2376" swarm-master docker-machine create \ -d virtualbox --virtualbox-disk-size "5000" \ --swarm \ --swarm-discovery="consul://$(docker-machine ip consul-machine):8500" \ --engine-opt="cluster-store=consul://$(docker-machine ip consul-machine):8500" \ --engine-opt="cluster-advertise=eth1:2376" swarm-node-01 docker-machine create \ -d virtualbox --virtualbox-disk-size "5000" \ --swarm \ --swarm-discovery="consul://$(docker-machine ip consul-machine):8500" \ --engine-opt="cluster-store=consul://$(docker-machine ip consul-machine):8500" \ --engine-opt="cluster-advertise=eth1:2376" swarm-node-02 

这些机器在创build期间joinSwarm集群。 如果一个新的Docker机器被创build为:

 docker-machine create -d virtualbox --virtualbox-disk-size "5000" swarm-node-03 

这台机器以后如何configuration成同一个Swarm集群的一部分?

现在不能通过Machine直接configuration,但是可以在创build的实例上手动运行Swarm容器。 运行docker ps --no-trunc并查看已join的Swarm容器应该会显示您需要启动的命令。

最棘手的一点可能是确保TLSconfiguration正确。 我的build议是使用docker-machine scp将你所需要的证书从一个已经运行的Swarm主机同步到另一个。

将来,我希望我们能够将“编排Swarm”的Machine分成几个小块,以便这种types的用例更容易。

更新 :看起来比我意识到的要容易一些。 无需手动复制证书。 在你的情况下,我认为像下面的命令应该join到现有的Swarm机器:

 $ docker \ $(docker-machine config swarm-node-03) \ run -d swarm \ join --advertise $(docker-machine ip swarm-node-03) --discovery="consul://$(docker-machine ip consul-machine):8500" 

它现在应该可以在Swarm master的docker info看到。

尝试这个:

 docker \ $(docker-machine config swarm-node-03) \ run -d swarm join --addr $(docker-machine ip swarm-node-03):2376 \ consul://$(docker-machine ip consul-machine):8500