логотип PurpleSchool
логотип PurpleSchool

Как работать с Docker Swarm

Автор

Олег Марков

Введение

Docker Swarm - это встроенный инструмент Docker для оркестрации контейнеров. Он позволяет вам легко управлять распределенными приложениями и кластером контейнеров. Одним из ключевых преимуществ Docker Swarm является его простота использования и встроенная интеграция с Docker. В этой статье мы разберем, как работать с Docker Swarm, чтобы вы могли использовать все его возможности для управления вашими контейнерами и приложениями.

Мы рассмотрим, как развернуть и настроить кластер Docker Swarm, как управлять сервисами и задачами, и как обеспечить отказоустойчивость и масштабируемость ваших приложений. Давайте начнем наше исследование возможностей Docker Swarm!

Подготовка к развертыванию Docker Swarm

Установка Docker

Прежде чем начать работу с Docker Swarm, вам необходимо установить Docker на все машины, которые будут участвовать в кластере. Docker Swarm встроен в Docker, поэтому отдельной установки Swarm не требуется. Вот команда для установки Docker на Ubuntu:

# Обновляем список пакетов
sudo apt-get update 

# Устанавливаем необходимые пакеты для использования репозиторий через HTTPS
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y

# Добавляем официальный GPG ключ Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# Добавляем Docker репозиторий
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

# Устанавливаем Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

# Проверяем, что Docker установлен успешно
docker --version

Инициализация Swarm-кластера

Теперь, когда Docker установлен, давайте инициализируем Swarm-кластер. Для этого необходимо выбрать одну из машин, которая будет выполнять роль менеджера:

# На менеджерной ноде
docker swarm init

После успешной инициализации вы увидите команду, которую необходимо запустить на рабочих узлах (worker nodes), чтобы подключиться к кластеру.

Добавление рабочих узлов

Переключитесь на каждую из рабочих машин и выполните там команду, полученную на предыдущем шаге. Обычно она выглядит так:

# На рабочей ноде
docker swarm join --token <TOKEN> <MANAGER_NODE_IP>:2377

Это позволит вашему рабочему узлу стать частью Swarm-кластера.

Управление сервисами в Docker Swarm

Создание сервиса

Docker Swarm позволяет вам создавать и управлять сервисами, определяя, как контейнеры должны развертываться и обновляться. Давайте создадим простейший сервис. Например, сервис, исполняющий образ nginx:

# Создание нового сервиса
docker service create --name my-nginx --replicas 3 -p 80:80 nginx
  • --name my-nginx задает имя сервиса.
  • --replicas 3 указывает, что мы хотим запустить три экземпляра контейнера (реплики).
  • -p 80:80 пробрасывает порты 80 на хост-машине к порту 80 внутри контейнера.

Управление сервисами

После создания сервиса, вы можете управлять им. Например, можно масштабировать количество реплик:

# Масштабирование сервиса
docker service scale my-nginx=5

Здесь мы увеличили количество реплик до пяти. Все изменения в конфигурации сервиса будут автоматически распределены по всему кластеру.

Обновление сервисов

Давайте посмотрим, как обновить сервис. Например, представим, что нам нужно изменить версию образа:

# Обновление версии образа сервиса
docker service update --image nginx:latest my-nginx

Эта команда обновляет все контейнеры текущего сервиса до последней версии образа nginx. Swarm будет обновлять контейнеры по одному, чтобы минимизировать время простоя.

Обеспечение отказоустойчивости и безопасности

Проверка состояния узлов

Вы всегда можете проверить состояние ваших узлов и убедиться, что они работают исправно:

# Проверка состояния узлов
docker node ls

Управление узлами

Если один из узлов начинает проявлять нестабильность, вы можете удалить его из кластера для предотвращения отказов:

# Удаление рабочего узла
docker node rm <NODE_ID>

Безопасность в Docker Swarm

Docker Swarm обеспечивает безопасность за счет использования TLS для шифрованного трафика между узлами по умолчанию. Вы также можете управлять сертификатами и изменять их при необходимости для дополнительной защиты.

Заключение

Docker Swarm предоставляет мощные возможности для оркестрации контейнеров в масштабах. В этой статье мы рассмотрели основные шаги для развертывания и управления Docker Swarm-кластером, включая создание и обновление сервисов, управление узлами, а также обеспечение отказоустойчивости и безопасности. Благодаря простоте использования и интеграции с Docker, Docker Swarm становится отличным выбором для управления вашими контейнерными приложениями. Теперь, когда вы познакомились с основными функциями Docker Swarm, вы можете начать использовать его в своих проектах и наслаждаться всеми преимуществами, которые он предоставляет.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile