Как использовать команду docker swarm unlock для разблокировки менеджера Swarm

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

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

Введение

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

Далее мы имитируем перезапуск Docker-демона на узле-менеджере, чтобы активировать механизм автоматической блокировки. Наконец, вы используете команду docker swarm unlock с ранее полученным ключом разблокировки, чтобы успешно разблокировать менеджер Swarm и разрешить ему продолжить свою работу.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/restart("Restart Container") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/ps -.-> lab-555244{{"Как использовать команду docker swarm unlock для разблокировки менеджера Swarm"}} docker/restart -.-> lab-555244{{"Как использовать команду docker swarm unlock для разблокировки менеджера Swarm"}} docker/system -.-> lab-555244{{"Как использовать команду docker swarm unlock для разблокировки менеджера Swarm"}} end

Инициализация Swarm с включенной автоматической блокировкой

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

Сначала инициализируем Swarm. Мы будем использовать команду docker swarm init с флагом --autolock.

docker swarm init --autolock

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

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

To unlock the swarm after it restarts, run the `docker swarm unlock` command and provide the following key:

    Swarm unlock key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

В выводе указана команда для присоединения рабочего узла (worker) или менеджера (manager) к Swarm, и, что особенно важно, Swarm unlock key (ключ разблокировки Swarm). Этот ключ является важным для разблокировки Swarm после перезапуска Docker-демона.

Перезапуск Docker-демона на узле-менеджере

На этом шаге мы имитируем перезапуск Docker-демона на узле-менеджере. Это продемонстрирует действие функции автоматической блокировки, которую мы включили на предыдущем шаге.

Для перезапуска Docker-демона мы используем команду systemctl restart docker. Поскольку для этого требуются привилегии суперпользователя (root), мы используем sudo.

sudo systemctl restart docker

После выполнения команды Docker-демон будет остановлен и затем запущен снова. Это имитирует перезапуск сервера или ручной перезапуск службы Docker.

Теперь попробуем выполнить простую команду Docker, чтобы посмотреть состояние Swarm. Мы используем docker node ls.

docker node ls

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

Error: swarm is encrypted and needs to be unlocked before it can be used. Please use "docker swarm unlock" to unlock it.

Это сообщение об ошибке ожидаемо, так как Swarm теперь заблокирован из-за перезапуска Docker-демона. На следующем шаге мы используем ключ разблокировки, полученный на Шаге 1, чтобы разблокировать Swarm.

Использование команды docker swarm unlock для разблокировки менеджера

На этом шаге мы разблокируем Docker Swarm с помощью ключа разблокировки, полученного на Шаге 1. Это позволит нам снова взаимодействовать с Swarm.

Вспомните ключ разблокировки, который был показан при инициализации Swarm на Шаге 1. Вам нужно будет передать этот ключ команде docker swarm unlock.

Используйте команду docker swarm unlock, за которой следует флаг --unlock-key и скопированный ключ разблокировки. Замените YOUR_UNLOCK_KEY на фактический ключ.

docker swarm unlock --unlock-key YOUR_UNLOCK_KEY

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

Swarm unlocked.

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

docker node ls

Теперь вы должны увидеть детали узла-менеджера, что указывает на то, что Swarm работает. Вывод будет похож на следующий:

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx   labex-vm            Ready     Active         Leader           20.10.21

Это подтверждает, что вы успешно разблокировали Docker Swarm после перезапуска демона.

Резюме

В этом практическом занятии (лабораторной работе) мы научились использовать команду docker swarm unlock для разблокировки менеджера Swarm после перезапуска Docker-демона, когда Swarm был инициализирован с включенной функцией автоматической блокировки. Мы начали с инициализации Docker Swarm с помощью команды docker swarm init --autolock, которая сгенерировала уникальный ключ разблокировки, необходимый для восстановления доступа к Swarm после перезапуска. Затем мы имитировали перезапуск Docker-демона на узле-менеджере с помощью команды sudo systemctl restart docker, чтобы активировать механизм автоматической блокировки. Это продемонстрировало важность ключа разблокировки, полученного при инициализации.