Docker Swarm

Что такое Docker Swarm?

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

Зачем использовать Docker Swarm?

  1. Простота: В отличие от Kubernetes, Docker Swarm проще в настройке и использовании.
  2. Встроенная интеграция: Не требует установки дополнительных компонентов.
  3. Балансировка нагрузки: Автоматически распределяет трафик между контейнерами.
  4. Отказоустойчивость: Перезапускает контейнеры при сбоях узлов.
  5. Масштабирование: Упрощает горизонтальное масштабирование приложений.

Основные концепции

  • 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/


🇺🇦 Stop Russian Aggression!
See what you can do →

Выберите мессенджер

Telegram Email Discord Forms