Что такое Docker Swarm?

«Что такое Docker Swarm?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Docker Swarm (или Swarm Mode) — это встроенный в Docker Engine оркестратор контейнеров для создания и управления кластерами из нескольких Docker-хостов. Он позволяет развертывать и масштабировать сервисы, состоящие из множества контейнеров, на группе машин (нод).

Базовая архитектура:

  • Manager Nodes: Управляют состоянием кластера, планируют задачи, обслуживают RAFT-консенсус.
  • Worker Nodes: Выполняют контейнерные задачи, полученные от менеджеров.

Пример работы с CLI:

# Инициализация Swarm на первой машине (она станет менеджером)
docker swarm init --advertise-addr <MANAGER-IP>

# Присоединение рабочей ноды к кластеру (команда выводится после init)
docker swarm join --token <WORKER-TOKEN> <MANAGER-IP>:2377

# Развертывание сервиса с 5 репликами и обновлением rolling update
docker service create --name web_api --replicas 5 
  --publish published=8080,target=80 
  --update-parallelism 2 --update-delay 10s 
  myregistry/webapp:2.1

# Масштабирование сервиса
docker service scale web_api=10

Ключевые особенности и сравнение:

  • Простота: Полная интеграция с Docker CLI, не требует установки дополнительных компонентов.
  • Отказоустойчивость: Менеджеры поддерживают состояние кластера в RAFT-логе. При падении контейнера Swarm запускает новую реплику.
  • Сетевые overlay-сети: Автоматическое создание сетей, доступных на всех нодах кластера.
  • В сравнении с Kubernetes: Swarm проще в освоении и администрировании для небольших и средних кластеров, но обладает менее богатой экосистемой и возможностями автоматизации (например, автодейлинг, CRD).