Como usar o comando docker plugin disable para desabilitar um plugin

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como gerenciar plugins do Docker, focando no comando docker plugin disable. Você começará listando os plugins atualmente instalados para entender seu status. Em seguida, você praticará a desativação de um plugin, observando o efeito dessa ação.

O laboratório também abordará como verificar se um plugin foi desativado com sucesso. Opcionalmente, você explorará cenários em que a desativação de um plugin pode ser restrita, como quando ele possui referências ativas, e como potencialmente forçar a desativação de um plugin ativo.

Listar plugins instalados

Nesta etapa, você aprenderá como listar os plugins do Docker que estão atualmente instalados em seu sistema. Os plugins do Docker estendem a funcionalidade do Docker, fornecendo recursos como gerenciamento de volumes, rede e logging.

Para listar os plugins instalados, você pode usar o comando docker plugin ls. Este comando mostrará uma lista de todos os plugins instalados, juntamente com seu status (habilitado ou desabilitado) e outras informações relevantes.

Vamos executar o comando para ver os plugins instalados.

docker plugin ls

Você deve ver uma saída semelhante a esta, embora os plugins específicos listados possam variar dependendo do seu ambiente:

ID    NAME    DESCRIPTION    ENABLED

Em um ambiente LabEx padrão, pode não haver nenhum plugin instalado por padrão. A saída acima indica que nenhum plugin está atualmente instalado. Se você tivesse plugins instalados, eles seriam listados aqui.

As colunas de saída são:

  • ID: O identificador único do plugin.
  • NAME: O nome do plugin.
  • DESCRIPTION: Uma breve descrição da funcionalidade do plugin.
  • ENABLED: Indica se o plugin está atualmente habilitado (true) ou desabilitado (false).

Compreender quais plugins estão instalados e seu status é o primeiro passo no gerenciamento de plugins do Docker. Nas etapas seguintes, você aprenderá como desabilitar e gerenciar esses plugins.

Desabilitar um plugin

Nesta etapa, você aprenderá como desabilitar um plugin do Docker instalado. Desabilitar um plugin impede que ele seja executado e torna sua funcionalidade indisponível para o Docker.

Para desabilitar um plugin, você usa o comando docker plugin disable seguido pelo nome ou ID do plugin que deseja desabilitar.

Como não há plugins instalados por padrão neste ambiente, primeiro instalaremos um plugin simples para demonstrar o comando de desabilitação. Vamos instalar o plugin vieux/sshfs, que permite montar sistemas de arquivos SSH remotos como volumes do Docker.

Primeiro, vamos instalar o plugin. Este comando irá baixar a imagem do plugin e habilitá-lo.

docker plugin install vieux/sshfs

Você será solicitado a confirmar as capacidades do plugin. Digite y e pressione Enter para prosseguir.

Plugin "vieux/sshfs" is requesting the following privileges:
 - network: [host]
 - mount: [/dev/fuse]
 - allow-host-dnsserver: true
 - allow-other: true
 - capability: [CAP_SYS_ADMIN]
Do you grant the plugin these privileges? [y/n] y

Após a conclusão da instalação, você pode verificar se o plugin está instalado e habilitado listando os plugins novamente:

docker plugin ls

Você deve agora ver vieux/sshfs listado com ENABLED definido como true.

ID                  NAME                DESCRIPTION                         ENABLED
<plugin_id>         vieux/sshfs         Mount remote SSH filesystem         true

Agora, vamos desabilitar o plugin vieux/sshfs usando seu nome:

docker plugin disable vieux/sshfs

Se o comando for bem-sucedido, você não verá nenhuma saída. Isso indica que o plugin foi desabilitado.

Desabilitar um plugin é útil quando você não precisa mais de sua funcionalidade ou se estiver solucionando problemas. Na próxima etapa, você verificará se o plugin foi realmente desabilitado.

Verificar se o plugin está desabilitado

Nesta etapa, você verificará se o plugin vieux/sshfs que você desabilitou na etapa anterior não está mais habilitado.

Para verificar o status dos plugins instalados, você pode usar o comando docker plugin ls novamente. Este comando mostrará o estado atual de todos os plugins.

Execute o comando:

docker plugin ls

Observe a saída do plugin vieux/sshfs. A coluna ENABLED agora deve mostrar false.

ID                  NAME                DESCRIPTION                         ENABLED
<plugin_id>         vieux/sshfs         Mount remote SSH filesystem         false

Ver false na coluna ENABLED confirma que o plugin foi desabilitado com sucesso. Quando um plugin é desabilitado, o Docker não pode usar sua funcionalidade.

Esta etapa de verificação é importante para garantir que seu comando anterior teve o efeito desejado. Nas próximas etapas opcionais, você explorará cenários em que a desabilitação de um plugin pode ser mais complexa.

Tentar desabilitar um plugin com referências (opcional)

Nesta etapa opcional, você tentará desabilitar um plugin que está atualmente em uso ou que possui recursos dependentes dele. Isso demonstrará como o Docker lida com essas situações.

Primeiro, vamos reabilitar o plugin vieux/sshfs para que possamos usá-lo.

docker plugin enable vieux/sshfs

Agora, vamos criar um volume do Docker que usa o plugin vieux/sshfs. Isso criará uma dependência no plugin.

docker volume create --driver vieux/sshfs -o sshcmd=user@host:/path/to/dir -o IdentityFile=~/.ssh/id_rsa sshfs_volume

Observação: Este comando provavelmente falhará porque você não tem um host SSH e uma chave válidos configurados. Isso é esperado e serve ao propósito de criar um volume que tenta usar o plugin, criando assim uma referência. Você verá uma mensagem de erro indicando que a criação do volume falhou.

Agora, vamos tentar desabilitar o plugin vieux/sshfs novamente enquanto o volume sshfs_volume existe, mesmo que a criação do volume tenha falhado.

docker plugin disable vieux/sshfs

Você deve ver uma mensagem de erro semelhante a esta:

Error response from daemon: plugin vieux/sshfs is in use by volume sshfs_volume

Este erro ocorre porque o Docker impede que você desabilite um plugin que está sendo referenciado por outros recursos do Docker, como volumes. Este é um mecanismo de segurança para evitar comportamentos inesperados ou perda de dados.

Para desabilitar o plugin com sucesso neste cenário, você precisaria primeiro remover o recurso dependente (o volume, neste caso). Vamos remover o volume:

docker volume rm sshfs_volume

Agora, você deve ser capaz de desabilitar o plugin:

docker plugin disable vieux/sshfs

Desta vez, o comando deve ser bem-sucedido sem uma mensagem de erro.

Esta etapa ilustra que o Docker gerencia dependências e impede que você desabilite plugins que estão sendo usados ativamente.

Forçar a desabilitação de um plugin ativo (opcional)

Nesta etapa opcional, você aprenderá como forçar a desabilitação de um plugin do Docker. Isso é, por vezes, necessário quando um plugin está travado ou não pode ser desabilitado normalmente. No entanto, use a opção de força com cautela, pois ela pode potencialmente levar a um comportamento inesperado se o plugin estiver sendo usado ativamente por recursos críticos.

Primeiro, vamos garantir que o plugin vieux/sshfs esteja habilitado.

docker plugin enable vieux/sshfs

Agora, vamos tentar forçar a desabilitação do plugin usando a flag -f ou --force:

docker plugin disable -f vieux/sshfs

Mesmo com a flag de força, se o plugin estiver sendo usado ativamente por um container em execução ou outro recurso crítico, o Docker ainda pode impedir a operação de desabilitação para evitar instabilidade do sistema. No entanto, para um plugin simples como vieux/sshfs que não está gerenciando ativamente um container em execução, a flag de força normalmente terá sucesso, mesmo que houvesse referências persistentes (embora tenhamos removido a referência do volume na etapa anterior).

A opção de força é projetada principalmente para lidar com situações em que um plugin não está respondendo ou não pode ser desabilitado pelo método padrão. Ele tenta desligar o processo do plugin e desabilitá-lo, independentemente de seu estado atual ou referências menores.

Após tentar forçar a desabilitação, você pode verificar o status do plugin:

docker plugin ls

O plugin vieux/sshfs agora deve ser listado com ENABLED definido como false.

ID                  NAME                DESCRIPTION                         ENABLED
<plugin_id>         vieux/sshfs         Mount remote SSH filesystem         false

Isso conclui as etapas opcionais sobre como lidar com dependências de plugins e forçar a desabilitação. Você aprendeu como listar, desabilitar e verificar o status dos plugins do Docker, bem como como o Docker lida com tentativas de desabilitar plugins com referências.

Resumo

Neste laboratório, você aprendeu a gerenciar plugins do Docker, com foco específico em desabilitá-los. Você começou listando os plugins instalados usando docker plugin ls para entender seu status e identificar quais estão ativos. Em seguida, você praticou a desabilitação de um plugin usando o comando docker plugin disable, demonstrando como interromper a funcionalidade de um plugin. Finalmente, você verificou se o plugin foi desabilitado com sucesso.