Docker Swarm helps manage groups of Docker hosts and lets you run and control containerized apps on many machines. It offers useful features like finding services, balancing loads, scaling, updating smoothly, and handling errors. Docker Swarm works well with the Docker system, so it's easy to use and fits with current Docker processes.
Example: Let's look at a basic example of creating a Docker Swarm group and running a simple web service on several nodes.
Set up Docker Swarm Cluster: You need multiple Docker hosts to create a Swarm cluster. For this example, let's assume you have three hosts with Docker installed and network connectivity between them.
Initialize the Swarm on the manager node:
docker swarm init --advertise-addr <manager-node-ip>
This command initializes the Swarm on the manager node and generates a token for joining worker nodes. Make a note of the join token displayed in the output.
Join worker nodes to the Swarm using the join token:
docker swarm join --token <worker-token> <manager-node-ip>:2377
Replace
<worker-token>
with the join token generated during initialization and<manager-node-ip>
with the IP address of the manager node.Deploy a Service: Once the Swarm cluster is set up, you can deploy services across the cluster. Let's deploy a simple web service using the
nginx
Docker image.Create a Docker Compose file named
docker-compose.yml
:version: '3.8' services: nginx: image: nginx:latest ports: - "80:80"
This Compose file defines a single service (
nginx
) using thenginx:latest
Docker image, which listens on port 80 and forwards requests to port 80 inside the container.Deploy the service to the Swarm cluster:
docker stack deploy -c docker-compose.yml mywebapp
This command deploys the service defined in the
docker-compose.yml
file as a stack namedmywebapp
in the Swarm cluster.Scale the Service: Docker Swarm allows you to scale services horizontally by increasing the number of replicas. Let's scale the
nginx
service to have three replicas:docker service scale mywebapp_nginx=3
This command scales the
nginx
service to have three replicas running across the Swarm cluster.Access the Service: Now that the service is deployed and scaled, you can access it through any of the Swarm nodes. Use the IP address of any node in the Swarm cluster to access the web service.
Open a web browser and navigate to
http://<node-ip>
to access the web service deployed by thenginx
service.
This example shows how to set up and deploy a Docker Swarm cluster and a simple web service across the cluster. Docker Swarm offers more advanced features for managing and organizing containerized apps in production environments.