Setting up a cluster

We’ll create a similar environment as we did in the previous chapter. We'll have three nodes which will form a Swarm cluster.

All the commands from this chapter are available in the 03-networking.sh (https://gist.github.com/vfarcic/fd7d7e04e1133fc3c90084c4c1a919fe) Gist.

By this time, you already know how to set up a cluster so we'll skip the explanation and just do it:

for i in 1 2 3; do
docker-machine create -d virtualbox node-$i
done

eval $(docker-machine env node-1)

docker swarm init \
--advertise-addr $(docker-machine ip node-1)

TOKEN=$(docker swarm join-token -q worker)

for i in 2 3; do
eval $(docker-machine env node-$i)

docker swarm join \
--token $TOKEN \
--advertise-addr $(docker-machine ip node-$i) \
$(docker-machine ip node-1):2377
done

eval $(docker-machine env node-1)

docker node ls

The output of the last command node ls is as follows (IDs were removed for brevity):

HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
node-2 Ready Active
node-1 Ready Active Leader
node-3 Ready Active

As you can see, we have a cluster of three nodes with node-1 being the only manager (and hence the leader).

Now that we have a fully operating cluster, we can explore the benefits Docker networking provides in conjunction with Swarm. We already worked with Swarm networking in the previous chapter. Now its time to go deeper, gain a better understanding of what we already saw, and unlock some new features and use cases.