How to Re-Address a Docker Swarm Master
Docker Swarm; the simple and quick way to build a docker cluster. That is until you need to re-address the cluster especially the master.
According to the Docker website, it is not really possible (warning: my vague interpretation of their documentation) and that you should be running your masters with static IP Addresses. Although workers are perfectly fine with dynamic addressing. This is great but what happens when your “test” environment is suddenly your “production” environment?
Create a second master on the new address. This is what I ended up doing – Learn from my mistakes.
If for some reason you can’t create a second master, then you can really hack up docker and force it to do what you want; technically once the swarm is initialised, you can’t change any of these via the docker command line but this will force some changes. This was highly unstable for me.
Within the directory /var/lib/docker/swarm there are two json files that you need to edit, state and docker-state.
On the master node you need to edit the “LocalAddr”, the “ListenAddr” and “AdvertiseAddr” in the docker-state.json, you also need to edit the “addr” in state.json.
On any worker nodes, you need to edit the “RemoteAddr” in the docker-state.json and the “addr” in stat.json.
Then simply restart docker; you may have to remove nodes and rejoin them.