需要解释群集上的docker文档

时间:2016-03-12 21:26:21

标签: docker consul docker-swarm

我完成了这个文档:

https://docs.docker.com/swarm/install-w-machine/

工作正常。

现在,我尝试按照以下文档设置此EC2实例:

https://docs.docker.com/swarm/install-manual/

我在步骤4.设置发现后端

我无法理解我需要做进一步的步骤。

我在EC2中创建了5个节点:manager0,manager1,consul0,node0,node1。现在我需要知道如何使用swarm设置服务发现。

在那个文档中,他们要求我们连接manager0和consul0然后ifconfig,然后将它们作为etc0实例给出。我不知道这是从哪里来的。

最终我需要知道运行此命令的位置(在哪个节点?):

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

对我的任何建议如何清除此步骤?

1 个答案:

答案 0 :(得分:0)

Consul将在您创建的consul0服务器上运行。所以基本上你首先需要能够远程运行worker0和worker1上的docker,这是第3步。更好的方法是直接使用命令编辑守护进程:

sudo echo 'DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"' > /etc/default/docker`

然后重启docker。之后,您会发现可以使用以以下开头的docker命令从master0,master1或防火墙后面的任何其他实例远程运行docker:

docker -H $WORKER0_IPADDRESS:2375 

例如,如果你的worker ip地址是1.2.3.4,这将远程运行docker ps命令:

docker -H 1.2.3.4:2375 ps

这就是swarm运行的地方。然后使用你想要运行的命令启动你的consul服务器,你就得到了那个,这就是你在consul0服务器上做任何其他事情,除了在运行你的swarm命令时使用它的IP地址。

因此,如果$ CONSUL0代表您的领事服务器的IP地址,那么您将如何设置其余的swarm。如果您在每个节点的本地计算机上运行它们中的每一个:

在consul0上:

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

在master0和master1上:

docker run --name=master -d -p 4000:4000 swarm manage -H :4000 --replication --advertise $(hostname -i):4000 consul://$CONSUL0:8500

在worker0和worker1上:

docker run -d --name=worker swarm join --advertise=$(hostname -i):2375 consul://$CONSUL0:8500/