Cómo usar el comando docker swarm unlock para desbloquear un gestor (manager) de swarm

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo utilizar el comando docker swarm unlock para desbloquear un gestor (manager) de Docker swarm después de que el demonio de Docker se haya reiniciado con la función de bloqueo automático (autolock) habilitada. Comenzaremos inicializando un swarm con la función de bloqueo automático habilitada, lo cual genera una clave de desbloqueo única.

A continuación, simularemos un reinicio del demonio de Docker en el nodo gestor (manager) para activar el mecanismo de bloqueo automático. Finalmente, utilizará el comando docker swarm unlock con la clave de desbloqueo obtenida previamente para desbloquear con éxito el gestor (manager) del swarm, permitiéndole reanudar sus operaciones.


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{{"Cómo usar el comando docker swarm unlock para desbloquear un gestor (manager) de swarm"}} docker/restart -.-> lab-555244{{"Cómo usar el comando docker swarm unlock para desbloquear un gestor (manager) de swarm"}} docker/system -.-> lab-555244{{"Cómo usar el comando docker swarm unlock para desbloquear un gestor (manager) de swarm"}} end

Inicializar un swarm con bloqueo automático (autolock) habilitado

En este paso, inicializaremos un swarm de Docker con la función de bloqueo automático (autolock) habilitada. El bloqueo automático ayuda a proteger el swarm contra accesos no autorizados al requerir una clave para desbloquear el swarm después de un reinicio del demonio de Docker.

Primero, inicialicemos el swarm. Utilizaremos el comando docker swarm init con la bandera --autolock.

docker swarm init --autolock

Debería ver una salida similar a esta, lo que indica que el swarm se ha inicializado y se ha generado una clave de desbloqueo. Asegúrese de copiar la clave de desbloqueo, ya que la necesitará en el siguiente paso.

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

La salida proporciona el comando para unir un trabajador (worker) o un gestor (manager) al swarm y, lo que es más importante, la Swarm unlock key (clave de desbloqueo del swarm). Esta clave es crucial para desbloquear el swarm después de que se reinicie el demonio de Docker.

Reiniciar el demonio de Docker en el nodo gestor (manager)

En este paso, simularemos un reinicio del demonio de Docker en el nodo gestor (manager). Esto demostrará el efecto de la función de bloqueo automático (autolock) que habilitamos en el paso anterior.

Para reiniciar el demonio de Docker, utilizaremos el comando systemctl restart docker. Dado que esto requiere privilegios de root, usaremos sudo.

sudo systemctl restart docker

Después de que se ejecute el comando, el demonio de Docker se detendrá y luego se iniciará nuevamente. Esto simula un reinicio del servidor o un reinicio manual del servicio de Docker.

Ahora, intentemos ejecutar un comando simple de Docker para ver el estado del swarm. Usaremos docker node ls.

docker node ls

Debería ver un mensaje de error que indica que el swarm está bloqueado y debe desbloquearse. Esto confirma que la función de bloqueo automático (autolock) está funcionando como se esperaba. La salida será similar a esta:

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

Este mensaje de error es esperado porque el swarm ahora está bloqueado debido al reinicio del demonio de Docker. En el siguiente paso, usaremos la clave de desbloqueo obtenida en el Paso 1 para desbloquear el swarm.

Usar docker swarm unlock para desbloquear el gestor (manager)

En este paso, desbloquearemos el swarm de Docker utilizando la clave de desbloqueo que obtuvimos en el Paso 1. Esto nos permitirá interactuar nuevamente con el swarm.

Recuerde la clave de desbloqueo que se mostró cuando inicializó el swarm en el Paso 1. Deberá proporcionar esta clave al comando docker swarm unlock.

Utilice el comando docker swarm unlock seguido de la bandera --unlock-key y la clave de desbloqueo que copió. Reemplace YOUR_UNLOCK_KEY con la clave real.

docker swarm unlock --unlock-key YOUR_UNLOCK_KEY

Después de ejecutar el comando con la clave de desbloqueo correcta, el swarm debería estar desbloqueado. Debería ver una salida que indique que el swarm se desbloqueó correctamente.

Swarm unlocked.

Ahora que el swarm está desbloqueado, verifiquemos que podemos interactuar con él nuevamente listando los nodos en el swarm.

docker node ls

Ahora debería ver los detalles del nodo gestor (manager), lo que indica que el swarm está operativo. La salida será similar a esta:

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

Esto confirma que ha desbloqueado con éxito el swarm de Docker después del reinicio del demonio.

Resumen

En este laboratorio (lab), aprendimos cómo usar el comando docker swarm unlock para desbloquear un gestor (manager) de swarm después de un reinicio del demonio de Docker cuando el swarm se inicializó con la función de bloqueo automático (autolock) habilitada. Comenzamos inicializando un swarm de Docker utilizando docker swarm init --autolock, lo cual generó una clave de desbloqueo única esencial para recuperar el acceso al swarm después de un reinicio. Luego, simulamos un reinicio del demonio de Docker en el nodo gestor (manager) utilizando sudo systemctl restart docker para activar el mecanismo de bloqueo automático (autolock). Esto demostró la importancia de la clave de desbloqueo obtenida durante la inicialización.