Como usar o comando docker swarm unlock para desbloquear um gerenciador de swarm

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker swarm unlock para desbloquear um gerenciador do Docker swarm após o daemon Docker ter sido reiniciado com o recurso de autolock habilitado. Começaremos inicializando um swarm com autolock habilitado, o que gera uma chave de desbloqueio única.

Em seguida, simularemos uma reinicialização do daemon Docker no nó gerenciador para acionar o mecanismo de autolock. Finalmente, você usará o comando docker swarm unlock com a chave de desbloqueio obtida anteriormente para desbloquear com sucesso o gerenciador do swarm, permitindo que ele retome suas operações.

Inicializar um swarm com autolock ativado

Nesta etapa, inicializaremos um Docker swarm com o recurso de autolock habilitado. O autolock ajuda a proteger o swarm contra acesso não autorizado, exigindo uma chave para desbloquear o swarm após uma reinicialização do daemon Docker.

Primeiro, vamos inicializar o swarm. Usaremos o comando docker swarm init com a flag --autolock.

docker swarm init --autolock

Você deve ver uma saída semelhante a esta, indicando que o swarm foi inicializado e uma chave de desbloqueio foi gerada. Certifique-se de copiar a chave de desbloqueio, pois você precisará dela na próxima etapa.

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

A saída fornece o comando para ingressar um worker ou manager no swarm e, o mais importante, a Swarm unlock key (chave de desbloqueio do Swarm). Essa chave é crucial para desbloquear o swarm após a reinicialização do daemon Docker.

Reiniciar o daemon Docker no nó gerenciador

Nesta etapa, simularemos uma reinicialização do daemon Docker no nó gerenciador. Isso demonstrará o efeito do recurso de autolock que habilitamos na etapa anterior.

Para reiniciar o daemon Docker, usaremos o comando systemctl restart docker. Como isso requer privilégios de root, usaremos sudo.

sudo systemctl restart docker

Após a execução do comando, o daemon Docker será interrompido e, em seguida, iniciado novamente. Isso simula uma reinicialização do servidor ou uma reinicialização manual do serviço Docker.

Agora, vamos tentar executar um comando Docker simples para ver o estado do swarm. Usaremos docker node ls.

docker node ls

Você deve ver uma mensagem de erro indicando que o swarm está bloqueado e precisa ser desbloqueado. Isso confirma que o recurso de autolock está funcionando conforme o esperado. A saída será semelhante a esta:

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

Esta mensagem de erro é esperada porque o swarm agora está bloqueado devido à reinicialização do daemon Docker. Na próxima etapa, usaremos a chave de desbloqueio obtida na Etapa 1 para desbloquear o swarm.

Usar docker swarm unlock para desbloquear o gerenciador

Nesta etapa, desbloquearemos o Docker swarm usando a chave de desbloqueio que obtivemos na Etapa 1. Isso nos permitirá interagir com o swarm novamente.

Recorde a chave de desbloqueio que foi exibida quando você inicializou o swarm na Etapa 1. Você precisará fornecer essa chave ao comando docker swarm unlock.

Use o comando docker swarm unlock seguido da flag --unlock-key e da chave de desbloqueio que você copiou. Substitua YOUR_UNLOCK_KEY pela chave real.

docker swarm unlock --unlock-key YOUR_UNLOCK_KEY

Após executar o comando com a chave de desbloqueio correta, o swarm deve ser desbloqueado. Você deve ver uma saída indicando que o swarm foi desbloqueado com sucesso.

Swarm unlocked.

Agora que o swarm está desbloqueado, vamos verificar se podemos interagir com ele novamente listando os nós no swarm.

docker node ls

Você deve agora ver os detalhes do nó gerenciador, indicando que o swarm está operacional. A saída será semelhante a esta:

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

Isso confirma que você desbloqueou com sucesso o Docker swarm após a reinicialização do daemon.

Resumo

Neste laboratório, aprendemos como usar o comando docker swarm unlock para desbloquear um gerenciador de swarm após uma reinicialização do daemon Docker, quando o swarm foi inicializado com o recurso de autolock habilitado. Começamos inicializando um Docker swarm usando docker swarm init --autolock, que gerou uma chave de desbloqueio única, essencial para recuperar o acesso ao swarm após uma reinicialização. Em seguida, simulamos uma reinicialização do daemon Docker no nó gerenciador usando sudo systemctl restart docker para acionar o mecanismo de autolock. Isso demonstrou a importância da chave de desbloqueio obtida durante a inicialização.