0

I finished this documentation:

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

It works fine.

Now I tried to setup this EC2 instances by following this documentation:

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

I am in Step 4. Set up a discovery backend

I cannot understand the steps what I need to do further.

I created 5 nodes in EC2: manager0, manager1, consul0, node0, node1. Now I need to know how to setup service discovery with swarm.

In that document they ask us to connect manager0 and consul0 then ifconfig, then they given as etc0 instance. I don't know where this is coming from.

Ultimately I need to know where (in which node?) to run this command:

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

Any suggestion for me How to clear this step?

4

1 回答 1

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 

例如,如果您的工人 IP 地址是 1.2.3.4,这将远程运行 docker ps 命令:

docker -H 1.2.3.4:2375 ps

这就是 swarm 运行的原因。然后用你想运行的命令启动你的 consul 服务器,你做对了,就是这样,你不会对 consul0 服务器做任何其他事情,除了在你运行你的 swarm 命令时使用它的 IP 地址。

所以如果 $CONSUL0 代表你的 consul 服务器的 IP 地址,这就是你设置 swarm 其余部分的方式。如果您在每个节点的本地计算机上运行它们中的每一个:

在领事0上:

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/
于 2016-06-15T06:55:31.103 回答