Docker Swarm
Что такое Docker Swarm?
Docker Swarm — это встроенный в Docker инструмент для оркестрации контейнеров. Он позволяет объединять несколько хостов с Docker в единый кластер (Swarm) и управлять приложениями как единым целым. Swarm автоматизирует распределение контейнеров между узлами, обеспечивает отказоустойчивость и масштабируемость.
Зачем использовать Docker Swarm?
- Простота: В отличие от Kubernetes, Docker Swarm проще в настройке и использовании.
- Встроенная интеграция: Не требует установки дополнительных компонентов.
- Балансировка нагрузки: Автоматически распределяет трафик между контейнерами.
- Отказоустойчивость: Перезапускает контейнеры при сбоях узлов.
- Масштабирование: Упрощает горизонтальное масштабирование приложений.
Основные концепции
- Manager Node (Управляющий узел): Управляет кластером, распределяет задачи, поддерживает состояние кластера.
- Worker Node (Рабочий узел): Выполняет задачи, запущенные менеджером.
- Service (Сервис): Описание состояния приложения (образ, порты, реплики).
- Task (Задача): Экземпляр контейнера, запущенный в рамках сервиса.
- Replica (Реплика): Количество идентичных контейнеров сервиса.
Краткое руководство по Docker Swarm
1. Инициализация Swarm
Создайте кластер на управляющем узле:
docker swarm init --advertise-addr <MANAGER_IP>
Команда вернет токен для подключения Worker-узлов.
2. Добавление узлов в кластер
На Worker-узлах выполните:
docker swarm join --token <TOKEN> <MANAGER_IP>:2377
3. Создание сервиса
Запустите сервис с Nginx:
docker service create --name web --replicas 3 -p 80:80 nginx
4. Масштабирование сервиса
Увеличьте количество реплик до 5:
docker service scale web=5
5. Обновление сервиса
Обновите образ контейнера:
docker service update --image nginx:latest web
6. Мониторинг
Просмотр списка сервисов:
docker service ls
Просмотр задач сервиса:
docker service ps web
Основные команды Docker Swarm
Команда | Описание |
---|---|
docker swarm init |
Инициализирует Swarm-кластер |
docker swarm join |
Подключает узел к кластеру |
docker service create |
Создает новый сервис |
docker service ls |
Список всех сервисов |
docker service scale |
Масштабирует сервис |
docker service update |
Обновляет конфигурацию сервиса |
docker service ps <SERVICE> |
Показывает задачи сервиса |
docker service inspect <SERVICE> |
Детальная информация о сервисе |
docker service logs <SERVICE> |
Логи сервиса |
docker node ls |
Список узлов в кластере |
Советы по использованию
- Резервирование Manager-узлов: используйте минимум 3 Manager-узла.
- Сеть overlay: создавайте overlay-сети для связи контейнеров между узлами.
- Секреты и конфиги: используйте
docker secret
иdocker config
для управления чувствительными данными.
Заключение
Docker Swarm — идеальный выбор для тех, кто хочет быстро развернуть отказоустойчивый кластер без сложных настроек. Он подходит для средних проектов и команд, которые уже работают с Docker. Для более сложных сценариев рассмотрите Kubernetes.
Официальная документация: https://docs.docker.com/engine/swarm/