Comment utiliser la commande docker secret ls pour lister les secrets

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à utiliser efficacement la commande docker secret ls pour gérer et afficher les secrets dans votre environnement Docker swarm. Vous commencerez par initialiser un Docker swarm et créer un secret d'exemple. Ensuite, vous explorerez comment lister tous les secrets existants, filtrer la sortie en fonction des noms et des étiquettes (labels) des secrets, et enfin, formater la sortie de la liste des secrets pour une meilleure lisibilité et une extraction d'informations spécifiques. Cette expérience pratique vous dotera des compétences nécessaires pour localiser et gérer efficacement vos données sensibles stockées sous forme de secrets 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{{"Comment utiliser la commande docker secret ls pour lister les secrets"}} docker/create -.-> lab-555222{{"Comment utiliser la commande docker secret ls pour lister les secrets"}} end

Lister tous les secrets

Dans cette étape, vous apprendrez à lister tous les secrets dans votre environnement Docker. Les secrets Docker sont utilisés pour gérer des données sensibles, telles que des mots de passe, des certificats TLS et des clés SSH. Ils sont stockés en toute sécurité dans le Docker swarm et peuvent être accessibles par les services exécutés dans le swarm.

Avant de lister les secrets, vous devez initialiser un Docker swarm. Un swarm est un cluster de moteurs Docker. Vous pouvez initialiser un swarm sur un seul nœud à des fins de test.

Ouvrez votre terminal et exécutez la commande suivante pour initialiser le swarm :

docker swarm init

Vous devriez voir une sortie indiquant que le swarm a été initialisé et que le nœud actuel est maintenant un gestionnaire (manager).

Maintenant que le swarm est initialisé, vous pouvez créer un secret. Nous allons créer un simple secret nommé my_secret avec la valeur my_secret_value.

Exécutez la commande suivante pour créer le secret :

echo "my_secret_value" | docker secret create my_secret -

Cette commande prend la chaîne de caractères "my_secret_value", la transmet (pipe) à la commande docker secret create et nomme le secret my_secret. Le tiret - à la fin indique que la valeur du secret est lue à partir de l'entrée standard.

Maintenant, listons les secrets qui existent dans votre Docker swarm. Vous pouvez utiliser la commande docker secret ls pour ce faire.

Exécutez la commande suivante :

docker secret ls

Vous devriez voir une sortie similaire à celle-ci, montrant l'ID, le nom et l'heure de création du secret que vous venez de créer :

ID                          NAME        CREATED
<secret_id>                 my_secret   About a minute ago

Cette commande liste tous les secrets actuellement gérés par votre Docker swarm. Dans les étapes suivantes, vous apprendrez à filtrer et formater cette sortie.

Filtrer les secrets par nom

Dans cette étape, vous apprendrez à filtrer la liste des secrets par leur nom en utilisant la commande docker secret ls avec l'option --filter. Cela est utile lorsque vous avez de nombreux secrets et que vous souhaitez trouver un secret spécifique ou un groupe de secrets ayant des noms similaires.

Dans l'étape précédente, vous avez créé un secret nommé my_secret. Créons un autre secret pour démontrer le filtrage. Nous l'appellerons another_secret.

Exécutez la commande suivante pour créer le nouveau secret :

echo "another_value" | docker secret create another_secret -

Maintenant, si vous exécutez à nouveau docker secret ls, vous verrez les deux secrets :

docker secret ls

La sortie ressemblera à ceci, montrant à la fois my_secret et another_secret :

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

Pour filtrer la liste afin d'afficher uniquement le secret nommé my_secret, vous pouvez utiliser l'option --filter name=my_secret.

Exécutez la commande suivante :

docker secret ls --filter name=my_secret

La sortie affichera maintenant uniquement le secret nommé my_secret :

ID                          NAME        CREATED
<secret_id_1>               my_secret   About 2 minutes ago

Vous pouvez également utiliser des noms partiels pour le filtrage. Par exemple, pour filtrer les secrets dont le nom contient "secret", vous pourriez utiliser un filtre similaire, bien que pour une correspondance exacte du nom, la commande précédente soit plus précise. Le filtre name effectue une correspondance exacte.

Cette capacité de filtrage est très utile dans les environnements avec un grand nombre de secrets, vous permettant de localiser rapidement les secrets spécifiques avec lesquels vous devez travailler.

Filtrer les secrets par étiquette (label)

Dans cette étape, vous apprendrez à filtrer les secrets en fonction des étiquettes (labels). Les étiquettes sont des paires clé-valeur que vous pouvez attacher aux objets Docker, y compris les secrets, pour les organiser et les catégoriser. Le filtrage par étiquettes est un moyen puissant de gérer les secrets dans des environnements complexes.

Tout d'abord, créons un nouveau secret et ajoutons-lui une étiquette lors de sa création. Nous allons créer un secret nommé labeled_secret et ajouter l'étiquette environment=production.

Exécutez la commande suivante pour créer le secret avec une étiquette :

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

Cette commande est similaire aux commandes docker secret create précédentes, mais nous avons ajouté l'option --label environment=production pour attacher une étiquette au secret.

Maintenant, créons un autre secret avec une étiquette différente. Nous l'appellerons dev_secret et lui donnerons l'étiquette environment=development.

Exécutez la commande suivante :

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

Si vous liste tous les secrets maintenant en utilisant docker secret ls, vous verrez les quatre secrets :

docker secret ls

La sortie affichera my_secret, another_secret, labeled_secret et dev_secret.

Pour filtrer les secrets et n'afficher que ceux ayant l'étiquette environment=production, vous pouvez utiliser l'option --filter label=environment=production.

Exécutez la commande suivante :

docker secret ls --filter label=environment=production

Vous devriez voir seulement le labeled_secret dans la sortie :

ID                          NAME            CREATED
<secret_id_3>               labeled_secret  About a minute ago

De même, pour filtrer les secrets ayant l'étiquette environment=development, vous utiliseriez --filter label=environment=development.

Exécutez la commande suivante :

docker secret ls --filter label=environment=development

Cela affichera seulement le dev_secret :

ID                          NAME        CREATED
<secret_id_4>               dev_secret  About a minute ago

Vous pouvez également filtrer les secrets qui ont une clé d'étiquette spécifique, quelle que soit sa valeur, en utilisant --filter label=environment.

Exécutez la commande suivante :

docker secret ls --filter label=environment

Cela affichera à la fois labeled_secret et dev_secret car ils ont tous deux la clé d'étiquette environment :

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

Le filtrage par étiquettes est un moyen flexible de gérer et de récupérer les secrets en fonction de vos propres catégories définies.

Formater la sortie de la liste des secrets

Dans cette étape, vous apprendrez à formater la sortie de la commande docker secret ls en utilisant l'option --format. Cela vous permet de personnaliser les informations affichées et la manière dont elles sont présentées, ce qui est utile pour les scripts ou la génération de rapports.

Par défaut, docker secret ls affiche un tableau avec des colonnes pour l'ID, le NOM et la DATE DE CRÉATION. Vous pouvez modifier ce format en utilisant l'option --format avec la syntaxe des templates Go.

Par exemple, pour afficher uniquement les noms des secrets, vous pouvez utiliser le format {{.Name}}.

Exécutez la commande suivante :

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

La sortie affichera maintenant uniquement les noms des secrets, chacun sur une nouvelle ligne :

my_secret
another_secret
labeled_secret
dev_secret

Vous pouvez également spécifier plusieurs champs et les formater sous forme de tableau. Par exemple, pour afficher l'ID et le Nom séparés par une tabulation, vous pouvez utiliser table {{.ID}}\t{{.Name}}. Le mot-clé table assure que la sortie est alignée en colonnes.

Exécutez la commande suivante :

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

La sortie sera un tableau avec deux colonnes :

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

Vous pouvez également afficher les informations au format JSON, ce qui est très utile pour le traitement par programme. Utilisez le format json.

Exécutez la commande suivante :

docker secret ls --format "json"

La sortie sera un tableau JSON, où chaque élément représente un 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"
    }
  }
]

L'option --format offre une grande flexibilité dans la façon dont vous visualisez et traitez les informations sur vos secrets Docker.

Résumé

Dans ce laboratoire (lab), vous avez appris à lister tous les secrets dans votre environnement Docker en utilisant la commande docker secret ls. Vous avez commencé par initialiser un swarm Docker et créer un secret d'exemple. Vous avez ensuite utilisé docker secret ls pour afficher l'ID, le nom et la date de création du secret créé.

Vous avez également appris à filtrer la liste des secrets par nom et par étiquette (label) en utilisant l'option --filter, et à formater la sortie de la commande docker secret ls pour une meilleure lisibilité ou à des fins de scripting.