# Initialise swarm cluster
sudo docker swarm init –advertise-addr <ip of eth0 or public-ip>
# To find the token generated for a worker or a manager
docker swarm join-token worker
docker swarm join-token manager
# To add a worker to this swarm, run the following command:
docker swarm join –token SWMTKN-1-27coght3o3vgoki6qke48fcbh22gvkve4eroot103092o0pqqt-1ns3vv1viq1o5pv6uc9mairum 10.0.0.20:2377
# docker swarm join–token worker
# To display all docker swarm nodes
docker node ls
# Inspecting Manager Node Status
docker node inspect <managername> –format “{{ .ManagerStatus.Reachability }}”
#Manager
docker node inspect swarm100 –format “{{ .ManagerStatus.Reachability }}”
#Workers
docker node inspect swarm101 –format “{{ .Status.State }}”
docker node inspect swarm102 –format “{{ .Status.State }}”
docker node inspect swarm103 –format “{{ .Status.State }}”
#Inspecting a Node ( Troubleshooting)
docker node inspect swarm01
docker node inspect swarm01 –pretty
docker node inspect swarm01 –pretty | grep -i Add*
# create a swarm docker service
docker service create –name <servicename> –replicas <numberofreplicas> <image>
docker service create –name webservers –replicas 1 nginx:latest
#Create a swarm sevice using GLOBAL
docker service create –name grafananodes –mode global grafana/grafana
–mode global ensures the all nodes available in swarm gets a container without specifying number of replicas required
# create a swarm docker service with port ( If no port is mentioned the container wont be accesible from outisde)
docker service create –name mcd –replicas 5 -p 7001:80 nginx:latest
# create a swarm docker service with a network
docker service create –name myoverlay –network mynetwork –replicas 3 nginx
# To display all services i created or defined
docker service ls
#Inspecting a Service
docker service inspect demotroubleshoot
docker service inspect demotroubleshoot –pretty
docker node inspect swarm101 –format “{{ .Status.State }}””{{ .Status.Addr }}”
# Verify the Host where service is created:
docker service ps myservice
docker service ps east-webservers
# To display/locate the running service in a swarm with desired config
docker service ps east-webservers –filter DESIRED-STATE=running
docker service ps east-webservers –filter DESIRED-STATE=running –filter NODE=swarm101
# 2 Approaches to Scale Servers
#————————————
# Scaling Up Operation for multiple services ( Autoscaling)
docker service scale <service name1> <servicename2>
docker service scale webserver1=5 webserver2=2
#or # for single service
docker service scale webserver=2
# or
# Scaling up operation for a single service
docker service update –replicas 2 webserver
#Scaling Down Operation
docker service scale webserver=1
#Verify Service Details:
docker service ls
docker service ps webserver
#Remove Services
docker service rm webserver
#Change the Node Availability to Drain ( Maintainence Mode)
docker node update –availability drain swarm03
#Verify Node status
docker node ls
#Change the Node Availability To Active
docker node update –availability active swarm03
# Swarm Password
SWMKEY-1-Ks2bW8Kivk4U32BeMV71W+qYWnpubXfnXVCdhobvHKI
# Create Service with Volume
docker service create –name myservice –mount type=volume,source=myvolume,target=/mypath nginx