在创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