Como usar o comando docker secret ls para listar segredos

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar efetivamente o comando docker secret ls para gerenciar e visualizar segredos dentro do seu ambiente Docker swarm. Você começará inicializando um Docker swarm e criando um segredo de exemplo. Em seguida, explorará como listar todos os segredos existentes, filtrar a saída com base nos nomes e rótulos dos segredos e, finalmente, formatar a saída da lista de segredos para melhor legibilidade e extração de informações específicas. Essa experiência prática o equipará com as habilidades necessárias para localizar e gerenciar com eficiência seus dados confidenciais armazenados como segredos Docker.

Listar todos os segredos

Nesta etapa, você aprenderá como listar todos os segredos no seu ambiente Docker. Os segredos Docker são usados para gerenciar dados confidenciais, como senhas, certificados TLS e chaves SSH. Eles são armazenados com segurança no Docker swarm e podem ser acessados por serviços em execução no swarm.

Antes de listar os segredos, você precisa inicializar um Docker swarm. Um swarm é um cluster de mecanismos Docker. Você pode inicializar um swarm em um único nó para fins de teste.

Abra seu terminal e execute o seguinte comando para inicializar o swarm:

docker swarm init

Você deve ver uma saída indicando que o swarm foi inicializado e que o nó atual agora é um gerente (manager).

Agora que o swarm está inicializado, você pode criar um segredo. Criaremos um segredo simples chamado my_secret com o valor my_secret_value.

Execute o seguinte comando para criar o segredo:

echo "my_secret_value" | docker secret create my_secret -

Este comando pega a string "my_secret_value", a direciona para o comando docker secret create e nomeia o segredo como my_secret. O hífen - no final indica que o valor do segredo está sendo lido da entrada padrão (standard input).

Agora, vamos listar os segredos que existem no seu Docker swarm. Você pode usar o comando docker secret ls para fazer isso.

Execute o seguinte comando:

docker secret ls

Você deve ver uma saída semelhante a esta, mostrando o ID, o nome e o tempo de criação do segredo que você acabou de criar:

ID                          NAME        CREATED
<secret_id>                 my_secret   About a minute ago

Este comando lista todos os segredos atualmente gerenciados pelo seu Docker swarm. Nas próximas etapas, você aprenderá como filtrar e formatar essa saída.

Filtrar segredos por nome

Nesta etapa, você aprenderá como filtrar a lista de segredos por seus nomes usando o comando docker secret ls com a flag --filter. Isso é útil quando você tem muitos segredos e deseja encontrar um específico ou um grupo de segredos com nomes semelhantes.

Na etapa anterior, você criou um segredo chamado my_secret. Vamos criar outro segredo para demonstrar a filtragem. Vamos nomeá-lo another_secret.

Execute o seguinte comando para criar o novo segredo:

echo "another_value" | docker secret create another_secret -

Agora, se você executar docker secret ls novamente, verá ambos os segredos:

docker secret ls

A saída será semelhante a esta, mostrando tanto my_secret quanto another_secret:

ID                          NAME            CREATED
<secret_id_1>               my_secret       About 2 minutes ago
<secret_id_2>               another_secret  About a few seconds ago

Para filtrar a lista para mostrar apenas o segredo chamado my_secret, você pode usar a opção --filter name=my_secret.

Execute o seguinte comando:

docker secret ls --filter name=my_secret

A saída agora mostrará apenas o segredo com o nome my_secret:

ID                          NAME        CREATED
<secret_id_1>               my_secret   About 2 minutes ago

Você também pode usar nomes parciais para filtragem. Por exemplo, para filtrar por segredos cujos nomes contenham "secret", você pode usar um filtro semelhante, embora para correspondência exata de nomes, o comando anterior seja mais preciso. O filtro name realiza uma correspondência exata.

Essa capacidade de filtragem é muito útil em ambientes com um grande número de segredos, permitindo que você localize rapidamente os segredos específicos com os quais precisa trabalhar.

Filtrar segredos por rótulo

Nesta etapa, você aprenderá como filtrar segredos com base em rótulos (labels). Rótulos são pares chave-valor que você pode anexar a objetos Docker, incluindo segredos, para organizá-los e categorizá-los. A filtragem por rótulos é uma maneira poderosa de gerenciar segredos em ambientes complexos.

Primeiro, vamos criar um novo segredo e adicionar um rótulo a ele durante a criação. Criaremos um segredo chamado labeled_secret e adicionaremos o rótulo environment=production.

Execute o seguinte comando para criar o segredo com um rótulo:

echo "production_value" | docker secret create --label environment=production labeled_secret -

Este comando é semelhante aos comandos docker secret create anteriores, mas adicionamos a flag --label environment=production para anexar um rótulo ao segredo.

Agora, vamos criar outro segredo com um rótulo diferente. Vamos nomeá-lo dev_secret e dar a ele o rótulo environment=development.

Execute o seguinte comando:

echo "development_value" | docker secret create --label environment=development dev_secret -

Se você listar todos os segredos agora usando docker secret ls, verá todos os três segredos:

docker secret ls

A saída mostrará my_secret, another_secret, labeled_secret e dev_secret.

Para filtrar os segredos e mostrar apenas aqueles com o rótulo environment=production, você pode usar a opção --filter label=environment=production.

Execute o seguinte comando:

docker secret ls --filter label=environment=production

Você deve ver apenas o labeled_secret na saída:

ID                          NAME            CREATED
<secret_id_3>               labeled_secret  About a minute ago

Da mesma forma, para filtrar por segredos com o rótulo environment=development, você usaria --filter label=environment=development.

Execute o seguinte comando:

docker secret ls --filter label=environment=development

Isso mostrará apenas o dev_secret:

ID                          NAME        CREATED
<secret_id_4>               dev_secret  About a minute ago

Você também pode filtrar por segredos que possuem uma chave de rótulo específica, independentemente de seu valor, usando --filter label=environment.

Execute o seguinte comando:

docker secret ls --filter label=environment

Isso mostrará tanto labeled_secret quanto dev_secret porque ambos possuem a chave de rótulo environment:

ID                          NAME            CREATED
<secret_id_3>               labeled_secret  About 2 minutes ago
<secret_id_4>               dev_secret      About 2 minutes ago

A filtragem por rótulos é uma maneira flexível de gerenciar e recuperar segredos com base em suas próprias categorias definidas.

Formatar a saída da lista de segredos

Nesta etapa, você aprenderá como formatar a saída do comando docker secret ls usando a flag --format. Isso permite que você personalize as informações exibidas e a maneira como elas são apresentadas, o que é útil para scripting ou geração de relatórios.

Por padrão, docker secret ls gera uma tabela com colunas para ID, NAME e CREATED. Você pode alterar este formato usando a flag --format com a sintaxe de template Go.

Por exemplo, para exibir apenas os nomes dos segredos, você pode usar o formato {{.Name}}.

Execute o seguinte comando:

docker secret ls --format "{{.Name}}"

A saída agora listará apenas os nomes dos segredos, cada um em uma nova linha:

my_secret
another_secret
labeled_secret
dev_secret

Você também pode especificar vários campos e formatá-los como uma tabela. Por exemplo, para exibir o ID e o Nome separados por uma tabulação, você pode usar table {{.ID}}\t{{.Name}}. A palavra-chave table garante que a saída seja alinhada em colunas.

Execute o seguinte comando:

docker secret ls --format "table {{.ID}}\t{{.Name}}"

A saída será uma tabela com duas colunas:

ID                          NAME
<secret_id_1>               my_secret
<secret_id_2>               another_secret
<secret_id_3>               labeled_secret
<secret_id_4>               dev_secret

Você também pode gerar a informação em formato JSON, o que é muito útil para processamento programático. Use o formato json.

Execute o seguinte comando:

docker secret ls --format "json"

A saída será um array JSON, onde cada elemento representa um segredo:

[
  {
    "ID": "<secret_id_1>",
    "Name": "my_secret",
    "CreatedAt": "2023-10-27 10:00:00 +0000 UTC",
    "UpdatedAt": "2023-10-27 10:00:00 +0000 UTC",
    "Labels": {}
  },
  {
    "ID": "<secret_id_2>",
    "Name": "another_secret",
    "CreatedAt": "2023-10-27 10:01:00 +0000 UTC",
    "UpdatedAt": "2023-10-27 10:01:00 +0000 UTC",
    "Labels": {}
  },
  {
    "ID": "<secret_id_3>",
    "Name": "labeled_secret",
    "CreatedAt": "2023-10-27 10:02:00 +0000 UTC",
    "UpdatedAt": "2023-10-27 10:02:00 +0002 UTC",
    "Labels": {
      "environment": "production"
    }
  },
  {
    "ID": "<secret_id_4>",
    "Name": "dev_secret",
    "CreatedAt": "2023-10-27 10:03:00 +0000 UTC",
    "UpdatedAt": "2023-10-27 10:03:00 +0000 UTC",
    "Labels": {
      "environment": "development"
    }
  }
]

A flag --format oferece grande flexibilidade na forma como você visualiza e processa informações sobre seus segredos Docker.

Resumo

Neste laboratório, você aprendeu como listar todos os segredos em seu ambiente Docker usando o comando docker secret ls. Você começou inicializando um Docker swarm e criando um segredo de exemplo. Em seguida, você usou docker secret ls para visualizar o ID, o nome e o tempo de criação do segredo criado.

Você também aprendeu como filtrar a lista de segredos por nome e rótulo (label) usando a flag --filter e como formatar a saída do comando docker secret ls para melhor legibilidade ou para fins de scripting.