Ответ
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).