Skip to content
Docker

icon picker
Docker Swarm (Orchestration Service by docker)

Docker swarm is used to cluster docker containers. It helps in scaling containers easily. It is a clustering and scheduling tool for docker containers.

Creating services in docker swarm
Initialise docker swarm
docker swarm init
Create a docker service
docker service create <image>

Example creating a service that will ping google

docker service create alpine ping www.google.com
list all running services in docker host
docker service ls
Scale up service
docker service update <service_name> --replicas <number_of_services>

Example

docker service objective_lalande --replicas 2

Create a docker swarm cluster
Creating a 4 node docker swarm cluster (where each node is in a diff VMs)
Switch manager node in docker

docker node update --role manager <node_name>

Get token to make other nodes join the swarm at run time

docker swarm join-token manager

To make a node leave the swarm

docker swarm leave -f


Docker swarm uses a overlay network for communication purposes.
There are two types of overlay network used:
Ingress (manages the control and data traffic related to swarm services[container comm])
bridge network[docker_gwbridge] (manages the node to node communication)

User defined overlay networks can be created but there are few conditions before creating user defined networks:
TCP Port 2377, TCP AND UDP Port 7946, UDP Port 4789 should be open for comms
docker swarm must be initialised on the node or join it to a existing swarm.
The above conditions must satisfy before a overlay network can be created.

Create an overlay network
docker network create -d overlay <network_name>
Adding service to custom network
docker service create --name <service_name> --network <network_name> -e <env_variables_if_any> <image_name>

Example

docker service create --name postgres --network custom_overlay_network -e POSTGRES_PASSWORD=mypassword postgres
Creating a service with custom network exposed to outer world
docker service create --name drupal --network custom_overlay_network -p 80:80 drupal
-p <published_port>:<container_port>
published_port is the port where the swarm makes the service available.
image.png
Ingress routing mess algorithm in docker swarm

Find the published port for a service
docker service inspect --format="{{json .Endpoint.Spec.Ports}}" <service_name>

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.