Как использовать команду docker swarm init для инициализации кластера

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (LabEx) вы научитесь инициализировать кластер Docker Swarm с помощью команды docker swarm init. Вы начнете с инициализации простого кластера, чтобы понять основные этапы процесса.

На основе базовой инициализации вы затем рассмотрите более сложные сценарии. Это включает инициализацию кластера с определенным адресом для объявления (advertise address) для управления сетевыми коммуникациями, включение автоматической блокировки (autolock) для повышения безопасности и настройку пользовательского порта для пути передачи данных (data path port). В результате этих шагов вы получите практический опыт настройки и настройки среды Docker Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") subgraph Lab Skills docker/ls -.-> lab-555240{{"Как использовать команду docker swarm init для инициализации кластера"}} docker/rm -.-> lab-555240{{"Как использовать команду docker swarm init для инициализации кластера"}} docker/inspect -.-> lab-555240{{"Как использовать команду docker swarm init для инициализации кластера"}} docker/info -.-> lab-555240{{"Как использовать команду docker swarm init для инициализации кластера"}} end

Инициализация простого кластера

На этом этапе вы научитесь инициализировать простой кластер Docker Swarm. Docker Swarm - это встроенное решение для кластеризации и оркестрации Docker. Оно позволяет создавать и управлять кластером узлов Docker.

Перед инициализацией кластера проверим текущий статус Docker.

docker info

Вы должны увидеть информацию о своей установке Docker. Найдите раздел "Swarm". Он должен показывать, что кластер Swarm неактивен.

Для инициализации простого кластера используйте команду docker swarm init. Эта команда превращает текущий узел Docker в менеджер кластера Swarm.

docker swarm init

После выполнения команды вы увидите вывод, который показывает, что кластер был успешно инициализирован, и предоставит команду для присоединения других узлов к кластеру в качестве рабочих узлов.

Проверим, что кластер был успешно инициализирован.

docker info

Теперь раздел "Swarm" должен показывать, что кластер Swarm активен и что текущий узел является менеджером.

Вы также можете использовать команду docker node ls для вывода списка узлов в кластере.

docker node ls

Вы должны увидеть текущий узел в списке со статусом "Ready" и ролью "Manager".

Инициализация кластера с определенным адресом для объявления (advertise address)

На предыдущем этапе вы инициализировали простой кластер Docker Swarm. На этом этапе вы научитесь инициализировать кластер и указать адрес, который менеджер кластера будет объявлять другим узлам. Это полезно в средах с несколькими сетевыми интерфейсами или когда вы хотите контролировать, какой адрес будет использоваться для коммуникации в кластере.

Сначала вам нужно покинуть существующий кластер. Это можно сделать с помощью команды docker swarm leave. Поскольку это единственный узел и он является менеджером, вам нужно использовать флаг --force.

docker swarm leave --force

Вы должны увидеть вывод, подтверждающий, что узел покинул кластер.

Теперь найдем IP - адрес вашего текущего компьютера. Вы можете использовать команду ip addr show и найти IP - адрес, связанный с вашим сетевым интерфейсом (обычно eth0 или ens*).

ip addr show

Определите IP - адрес, который вы хотите использовать в качестве адреса для объявления (advertise address) кластера. Например, если ваш IP - адрес 172.17.0.2, вы будете использовать его.

Теперь инициализируйте кластер снова, но на этот раз укажите адрес для объявления с помощью флага --advertise-addr. Замените <YOUR_IP_ADDRESS> на фактический IP - адрес, который вы нашли.

docker swarm init --advertise-addr <YOUR_IP_ADDRESS>

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

Чтобы убедиться, что кластер был инициализирован с правильным адресом для объявления, вы можете проверить настройки кластера.

docker swarm inspect --pretty

Найдите поле AdvertiseAddr в выводе. Он должен совпадать с указанным вами IP - адресом.

Инициализация кластера с включенной функцией автоматической блокировки (autolock)

На этом этапе вы научитесь инициализировать кластер Docker Swarm с включенной функцией автоматической блокировки (autolock). Функция автоматической блокировки помогает защитить кластер от несанкционированного доступа, требуя ключ расшифровки для разблокировки кластера после перезапуска демона Docker.

Сначала покиньте существующий кластер, как вы сделали на предыдущем этапе.

docker swarm leave --force

Теперь инициализируйте кластер с флагом --autolock. Вы также можете снова использовать флаг --advertise-addr, если хотите указать адрес для объявления (advertise address). Замените <YOUR_IP_ADDRESS> на IP - адрес вашего компьютера.

docker swarm init --autolock --advertise-addr <YOUR_IP_ADDRESS>

При инициализации кластера с флагом --autolock в выводе будет указан "Swarm auto - lock key" (ключ автоматической блокировки кластера). Важно сохранить этот ключ в безопасном месте. Вам понадобится он для разблокировки кластера после перезапуска демона Docker.

Чтобы убедиться, что функция автоматической блокировки включена, вы можете проверить настройки кластера.

docker swarm inspect --pretty

Найдите поле AutoLockManagers в выводе. Оно должно быть установлено в true.

Обратите внимание, что так как это кластер с одним узлом в лабораторной среде, вы не ощутите полного эффекта функции автоматической блокировки, которая требует ключ после перезапуска демона. Однако этот этап демонстрирует, как включить эту функцию.

Инициализация кластера с пользовательским портом для пути передачи данных (data path port)

На этом этапе вы научитесь инициализировать кластер Docker Swarm и указать пользовательский порт для сети пути передачи данных (data path network). Сеть пути передачи данных используется для связи между узлами кластера для таких задач, как обнаружение сервисов и балансировка нагрузки. По умолчанию используется порт 4789. Возможно, вам придется изменить этот порт, если он конфликтует с другими службами в вашей сети.

Сначала покиньте существующий кластер.

docker swarm leave --force

Теперь инициализируйте кластер и укажите пользовательский порт для пути передачи данных с помощью флага --data-path-port. В качестве примера используем порт 5789. Вы также можете добавить флаги --advertise-addr и --autolock, если хотите. Замените <YOUR_IP_ADDRESS> на IP - адрес вашего компьютера.

docker swarm init --data-path-port 5789 --advertise-addr < YOUR_IP_ADDRESS > --autolock

Вы увидите вывод инициализации, включая ключ автоматической блокировки (autolock key), если вы его включили.

Чтобы убедиться, что пользовательский порт для пути передачи данных настроен правильно, вы можете проверить настройки кластера.

docker swarm inspect --pretty

Найдите поле DataPathPort в выводе. Он должен отображать пользовательский порт, который вы указали, в данном примере это 5789.

Это завершает шаги по инициализации кластера Docker Swarm с различными параметрами. Вы научились инициализировать простой кластер, указывать адрес для объявления (advertise address), включать автоматическую блокировку (autolock) и задавать пользовательский порт для пути передачи данных.

Резюме

В этом лабораторном занятии вы изучили основные этапы инициализации кластера Docker Swarm. Вы начали с инициализации простого кластера с помощью команды docker swarm init, наблюдая за изменениями в выводе команды docker info и проверяя роль менеджера с помощью команды docker node ls.

Затем вы рассмотрели более продвинутые параметры инициализации. Вы узнали, как покинуть существующий кластер с помощью команды docker swarm leave --force и затем переинициализировать кластер, указав определенный адрес для объявления (advertise address) с помощью флага --advertise-addr. Это показало, как управлять сетевым интерфейсом, используемым для связи в кластере.