Docker Swarm:温度发现和集群存储的区别

当创build一个新的swarm节点时,我们有如下的swarm master代码:

docker-machine create \ -d digitalocean \ --swarm \ --swarm-master \ --swarm-discovery="consul://${KV_IP}:8500" \ --engine-opt="cluster-store=consul://${KV_IP}:8500" \ --engine-opt="cluster-advertise=eth1:2376" \ queenbee 

我不明白的是为什么我们需要这两行?

 --swarm-discovery="consul://${KV_IP}:8500" \ --engine-opt="cluster-store=consul://${KV_IP}:8500" \ 

我迄今为止发现的是:

  • –swarm-discovery指示创build的Swarm工作者容器使用指定的地址和协议来查找创build的键值存储(在这里是consul://)
  • –cluster-store告诉Docker守护进程哪个KV存储用于libnetwork需要的协调,类似于上面列出的–swarm-discovery选项。

但是他们的区别对我来说还是不清楚的。

你基本上是正确的。

--swarm-discovery选项用于指定包含Swarm节点详细信息的键值存储区,并用于pipe理集群服务发现。 请注意,这甚至可以是包含节点列表的简单文件,或者(不推荐)Docker Hub。

但是,– --cluster-store选项必须是支持libkv键值存储。 Docker Engine使用它来共享容器,networking和卷的详细信息。 这不需要Swarm,完全可以创build一个使用Consul链接的Docker集群,但是Swarm使用一些替代的编排机制。 通常,Swarm和Docker集群共享同一个存储区是最简单的,尽pipe每个集群也可以有不同的机制。