Skillversitas

Docker Swarm

Docker Swarm is Docker's built-in orchestration tool for managing container clusters.

Initializing a Swarm

# Initialize the swarm
docker swarm init

# Initialize with a specific IP
docker swarm init --advertise-addr 192.168.1.100

# View nodes
docker node ls

Service Management

# Create a service
docker service create --name web --replicas 3 -p 80:80 nginx

# View services
docker service ls

# View service details
docker service ps web

# Scale a service
docker service scale web=5

# Update a service
docker service update --image nginx:1.25 web

# Delete a service
docker service rm web

Stack Deployment

# Deploy a stack from a compose file
docker stack deploy -c docker-compose.yml myapp

# View stacks
docker stack ls

# View services in a stack
docker stack services myapp

# Delete a stack
docker stack rm myapp

Use Case: Application Swarm

# docker-compose.yml (Swarm mode)
version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
    networks:
      - frontend

  api:
    build: ./backend
    deploy:
      replicas: 2
      resources:
        limits:
          cpus: '0.5'
          memory: 256M
    networks:
      - backend

  database:
    image: postgres:15
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
    deploy:
      placement:
        constraints:
          - node.labels.db == true

networks:
  frontend:
  backend:

volumes:
  db-data:

Everyday Use Case

Case: Deploy an application to a cluster.

# Initialize the swarm
docker swarm init

# Deploy the stack
docker stack deploy -c docker-compose.yml myapp

# View the status
docker stack services myapp

# Scale a service
docker service scale myapp_api=5

Best Practices

  1. Use stack files: For reproducible deployments
  2. Placement constraints: Define where a service runs
  3. Update policy: Use rolling updates
  4. Resource limits: Set CPU and memory
  5. Health checks: For fault tolerance

Troubleshooting

Service won't start

# Check the service logs
docker service logs web

# Check the failed task
docker service ps web --filter "desired-state=shutdown"

# Inspect the service
docker service inspect web

Conclusion

Docker Swarm provides simple orchestration for multi-container applications. It is suitable for simple to medium-sized deployments.