How to run Docker Swarm localy

Suppose there is an application which uses docker-compose to run and you want to try it in swarm mode.

First of all you need to initialize swarm nodes.

docker swarm init
SWARM_TOKEN=$(docker swarm join-token -q worker)
SWARM_MASTER=$(docker info | grep -w 'Node Address' | awk '{print $3}')

for i in $(seq 3); do
  docker run -d --privileged --name worker-${i} --hostname=worker-${i} -p ${i}2375:2375 docker:dind
  docker --host=localhost:${i}2375 swarm join --token ${SWARM_TOKEN} ${SWARM_MASTER}:2377

Run visualizer docker run -it -d -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer to see the nodes and the services on them.

Then deploy the application.

docker stack deploy --compose-file docker-compose.yml yourapp

If you have private docker repository add a --with-registry-auth option.

Now you can play with deploy options in the docker-compose file.

To remove the application from the swarm use docker stack rm yourapp.

comments powered by Disqus