Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker Swarm: difference between --swarm-discovery and cluster-store

When creating a new swarm node we have something like the following code for the 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

What I don't understand is why we need both these lines?

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

What I have found so far is:

  • --swarm-discovery instructs the created Swarm worker container to look for the created key-value store using the specified address and protocol (consul:// here)
  • --cluster-store tells the Docker daemon which KV store to use for libnetwork’s needed coordination, similar to the --swarm-discovery option outlined above.

but their difference is still not clear to me.

like image 272
Kostas Avatar asked Oct 15 '25 19:10

Kostas


1 Answers

You are basically correct.

The --swarm-discovery option is used to specify the key-value store that contains details of the Swarm nodes, and is used to manage the cluster service discovery. Note that this can even be a simple file with a list of nodes, or (not recommended) Docker Hub.

The --cluster-store option must be a libkv supported key-value store, however. This is used by Docker Engine to share details of containers, networks and volumes. This does not require Swarm, and it is perfectly possible to create a Docker cluster linked using Consul but that uses some alternative orchestration mechanism to Swarm. Generally, it is simplest for the Swarm and Docker cluster to share the same store, although it could also be possible to have different mechanisms for each.

like image 99
grkvlt Avatar answered Oct 18 '25 15:10

grkvlt



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!