Skip to content

Instantly share code, notes, and snippets.

@m99coder
Last active September 9, 2022 20:37
Show Gist options
  • Save m99coder/860ed23e2bba3d7da4ae28f4cbd808b6 to your computer and use it in GitHub Desktop.
Save m99coder/860ed23e2bba3d7da4ae28f4cbd808b6 to your computer and use it in GitHub Desktop.
Docker Swarm

Docker Swarm

Initialization

# on leader node
docker swarm init
docker node ls

# on worker nodes
docker swarm join --token <TOKEN> <PRIVATE-IP>:2377

# retrieve join token if already initialized
docker swarm join-token worker
docker swarm join-token manager

Service

docker service create \
  --name web-app \
  --publish published=80,target=3000 \
  --replicas 3 \
  web-app
  
docker service ls

# scale up
docker service scale web-app=5

# list replicas
docker service ps web-app

Backup & Restore

# backup
systemctl stop docker
tar czvf swarm.tgz /var/lib/docker/swarm/
scp swarm.tgz cloud_user@<PRIVATE-IP>:/home/cloud_user

# restore
tar zxvf swarm.tgz
cd var/lib/docker/
cp -rf swarm/ /var/lib/docker/

systemctl restart docker
docker swarm init --force-new-cluster

# on worker nodes
docker swarm leave
docker swarm join --token <TOKEN> <PRIVATE-IP-OF-BACKUP-SERVER>:2377

Management

# prevent node from being selected for service deployments
docker node update --availability drain <NODE-ID>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment