Docker Swarm:--swarm-discovery 和 cluster-store 之间的区别
Docker Swarm: difference between --swarm-discovery and cluster-store
当创建一个新的 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指示创建的Swarm worker容器使用指定的地址和协议(这里是consul://)寻找创建的key-value store
- --cluster-store 告诉 Docker 守护进程使用哪个 KV 存储来进行 libnetwork 所需的协调,类似于上面概述的 --swarm-discovery 选项。
但我还是不清楚它们的区别。
你基本上是对的。
--swarm-discovery
选项用于指定包含Swarm节点详细信息的键值存储,用于管理集群服务发现。请注意,这甚至可以是一个包含节点列表的简单文件,或者(不推荐)Docker Hub.
但是,--cluster-store
选项 必须 是 libkv
支持的键值存储。 Docker 引擎使用它来共享容器、网络和卷的详细信息。这 不需要 需要 Swarm,并且完全有可能创建一个 Docker 使用 Consul 链接的集群,但它使用一些替代 Swarm 的编排机制。一般来说,Swarm 和 Docker 集群共享同一个存储是最简单的,尽管它们也可以有不同的机制。
当创建一个新的 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指示创建的Swarm worker容器使用指定的地址和协议(这里是consul://)寻找创建的key-value store
- --cluster-store 告诉 Docker 守护进程使用哪个 KV 存储来进行 libnetwork 所需的协调,类似于上面概述的 --swarm-discovery 选项。
但我还是不清楚它们的区别。
你基本上是对的。
--swarm-discovery
选项用于指定包含Swarm节点详细信息的键值存储,用于管理集群服务发现。请注意,这甚至可以是一个包含节点列表的简单文件,或者(不推荐)Docker Hub.
--cluster-store
选项 必须 是 libkv
支持的键值存储。 Docker 引擎使用它来共享容器、网络和卷的详细信息。这 不需要 需要 Swarm,并且完全有可能创建一个 Docker 使用 Consul 链接的集群,但它使用一些替代 Swarm 的编排机制。一般来说,Swarm 和 Docker 集群共享同一个存储是最简单的,尽管它们也可以有不同的机制。