Cómo usar el comando docker secret ls para listar secretos

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 de manera efectiva el comando docker secret ls para gestionar y visualizar los secretos (secrets) dentro de su entorno de clúster (swarm) de Docker. Comenzará inicializando un clúster (swarm) de Docker y creando un secreto (secret) de muestra. Posteriormente, explorará cómo listar todos los secretos (secrets) existentes, filtrar la salida en función de los nombres y etiquetas de los secretos (secrets), y finalmente, dar formato a la salida de la lista de secretos (secrets) para una mejor legibilidad y extracción de información específica. Esta experiencia práctica le proporcionará las habilidades necesarias para localizar y gestionar de manera eficiente sus datos confidenciales almacenados como secretos (secrets) de Docker.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/ls -.-> lab-555222{{"Cómo usar el comando docker secret ls para listar secretos"}} docker/create -.-> lab-555222{{"Cómo usar el comando docker secret ls para listar secretos"}} end

Listar todos los secretos

En este paso, aprenderá cómo listar todos los secretos (secrets) en su entorno de Docker. Los secretos (secrets) de Docker se utilizan para gestionar datos confidenciales, como contraseñas, certificados TLS y claves SSH. Se almacenan de forma segura en el clúster (swarm) de Docker y pueden ser accedidos por los servicios que se ejecutan en el clúster (swarm).

Antes de listar los secretos (secrets), debe inicializar un clúster (swarm) de Docker. Un clúster (swarm) es un grupo de motores de Docker. Puede inicializar un clúster (swarm) en un solo nodo con fines de prueba.

Abra su terminal y ejecute el siguiente comando para inicializar el clúster (swarm):

docker swarm init

Debería ver una salida que indique que el clúster (swarm) se ha inicializado y que el nodo actual es ahora un administrador (manager).

Ahora que el clúster (swarm) está inicializado, puede crear un secreto (secret). Crearemos un secreto (secret) simple llamado my_secret con el valor my_secret_value.

Ejecute el siguiente comando para crear el secreto (secret):

echo "my_secret_value" | docker secret create my_secret -

Este comando toma la cadena "my_secret_value", la canaliza al comando docker secret create y nombra el secreto (secret) my_secret. El guión - al final indica que el valor del secreto (secret) se está leyendo desde la entrada estándar.

Ahora, listemos los secretos (secrets) que existen en su clúster (swarm) de Docker. Puede usar el comando docker secret ls para hacer esto.

Ejecute el siguiente comando:

docker secret ls

Debería ver una salida similar a esta, que muestra el ID, el nombre y la hora de creación del secreto (secret) que acaba de crear:

ID                          NAME        CREATED
<secret_id>                 my_secret   About a minute ago

Este comando lista todos los secretos (secrets) actualmente gestionados por su clúster (swarm) de Docker. En los siguientes pasos, aprenderá cómo filtrar y dar formato a esta salida.

Filtrar secretos por nombre

En este paso, aprenderá cómo filtrar la lista de secretos (secrets) por su nombre utilizando el comando docker secret ls con la opción --filter. Esto es útil cuando tiene muchos secretos (secrets) y desea encontrar uno específico o un grupo de secretos (secrets) con nombres similares.

En el paso anterior, creó un secreto (secret) llamado my_secret. Creemos otro secreto (secret) para demostrar el filtrado. Lo llamaremos another_secret.

Ejecute el siguiente comando para crear el nuevo secreto (secret):

echo "another_value" | docker secret create another_secret -

Ahora, si ejecuta docker secret ls nuevamente, verá ambos secretos (secrets):

docker secret ls

La salida se verá similar a esta, mostrando tanto my_secret como 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 la lista y mostrar solo el secreto (secret) llamado my_secret, puede utilizar la opción --filter name=my_secret.

Ejecute el siguiente comando:

docker secret ls --filter name=my_secret

Ahora la salida solo mostrará el secreto (secret) con el nombre my_secret:

ID                          NAME        CREATED
<secret_id_1>               my_secret   About 2 minutes ago

También puede utilizar nombres parciales para filtrar. Por ejemplo, para filtrar secretos (secrets) cuyos nombres contengan "secret", podría utilizar un filtro similar, aunque para una coincidencia exacta de nombres, el comando anterior es más preciso. El filtro name realiza una coincidencia exacta.

Esta capacidad de filtrado es muy útil en entornos con una gran cantidad de secretos (secrets), lo que le permite encontrar rápidamente los secretos (secrets) específicos con los que necesita trabajar.

Filtrar secretos por etiqueta

En este paso, aprenderá cómo filtrar secretos (secrets) basados en etiquetas (labels). Las etiquetas (labels) son pares clave-valor que puede adjuntar a objetos de Docker, incluyendo secretos (secrets), para organizarlos y categorizarlos. Filtrar por etiquetas (labels) es una forma poderosa de gestionar secretos (secrets) en entornos complejos.

Primero, creemos un nuevo secreto (secret) y agreguemos una etiqueta (label) durante la creación. Crearemos un secreto (secret) llamado labeled_secret y agregaremos la etiqueta (label) environment=production.

Ejecute el siguiente comando para crear el secreto (secret) con una etiqueta (label):

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

Este comando es similar a los comandos docker secret create anteriores, pero hemos agregado la opción --label environment=production para adjuntar una etiqueta (label) al secreto (secret).

Ahora, creemos otro secreto (secret) con una etiqueta (label) diferente. Lo llamaremos dev_secret y le daremos la etiqueta (label) environment=development.

Ejecute el siguiente comando:

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

Si lista todos los secretos (secrets) ahora utilizando docker secret ls, verá los tres secretos (secrets):

docker secret ls

La salida mostrará my_secret, another_secret, labeled_secret y dev_secret.

Para filtrar los secretos (secrets) y mostrar solo aquellos con la etiqueta (label) environment=production, puede utilizar la opción --filter label=environment=production.

Ejecute el siguiente comando:

docker secret ls --filter label=environment=production

Debería ver solo el labeled_secret en la salida:

ID                          NAME            CREATED
<secret_id_3>               labeled_secret  About a minute ago

De manera similar, para filtrar secretos (secrets) con la etiqueta (label) environment=development, utilizaría --filter label=environment=development.

Ejecute el siguiente comando:

docker secret ls --filter label=environment=development

Esto mostrará solo el dev_secret:

ID                          NAME        CREATED
<secret_id_4>               dev_secret  About a minute ago

También puede filtrar secretos (secrets) que tengan una clave de etiqueta (label) específica, independientemente de su valor, utilizando --filter label=environment.

Ejecute el siguiente comando:

docker secret ls --filter label=environment

Esto mostrará tanto labeled_secret como dev_secret porque ambos tienen la clave de etiqueta (label) environment:

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

Filtrar por etiquetas (labels) es una forma flexible de gestionar y recuperar secretos (secrets) basados en sus propias categorías definidas.

Formatear la salida de la lista de secretos

En este paso, aprenderá cómo formatear la salida del comando docker secret ls utilizando la opción --format. Esto le permite personalizar la información mostrada y la forma en que se presenta, lo cual es útil para scripting o generar informes.

Por defecto, docker secret ls muestra una tabla con columnas para ID, NOMBRE y CREADO. Puede cambiar este formato utilizando la opción --format con la sintaxis de plantillas de Go.

Por ejemplo, para mostrar solo los nombres de los secretos (secrets), puede utilizar el formato {{.Name}}.

Ejecute el siguiente comando:

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

Ahora la salida solo listará los nombres de los secretos (secrets), cada uno en una nueva línea:

my_secret
another_secret
labeled_secret
dev_secret

También puede especificar múltiples campos y formatearlos como una tabla. Por ejemplo, para mostrar el ID y el Nombre separados por una tabulación, puede utilizar table {{.ID}}\t{{.Name}}. La palabra clave table asegura que la salida se alinee en columnas.

Ejecute el siguiente comando:

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

La salida será una tabla con dos columnas:

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

También puede mostrar la información en formato JSON, lo cual es muy útil para el procesamiento programático. Utilice el formato json.

Ejecute el siguiente comando:

docker secret ls --format "json"

La salida será una matriz JSON, donde cada elemento representa un secreto (secret):

[
  {
    "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"
    }
  }
]

La opción --format ofrece una gran flexibilidad en cómo visualiza y procesa la información sobre sus secretos (secrets) de Docker.

Resumen

En este laboratorio (lab), aprendió cómo listar todos los secretos (secrets) en su entorno de Docker utilizando el comando docker secret ls. Comenzó inicializando un swarm de Docker y creando un secreto (secret) de muestra. Luego, utilizó docker secret ls para ver el ID, el nombre y la hora de creación del secreto (secret) creado.

También aprendió cómo filtrar la lista de secretos (secrets) por nombre y etiqueta (label) utilizando la opción --filter, y cómo formatear la salida del comando docker secret ls para una mejor legibilidad o con fines de scripting.