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节点详细信息的键值存储,用于管理集群服务发现。请注意,这甚至可以是一个包含节点列表的简单文件,或者(不推荐)Docker Hub.

但是,

--cluster-store 选项 必须 libkv 支持的键值存储。 Docker 引擎使用它来共享容器、网络和卷的详细信息。这 不需要 需要 Swarm,并且完全有可能创建一个 Docker 使用 Consul 链接的集群,但它使用一些替代 Swarm 的编排机制。一般来说,Swarm 和 Docker 集群共享同一个存储是最简单的,尽管它们也可以有不同的机制。