Comment utiliser la commande docker image ls pour lister et filtrer les images

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 lab, vous apprendrez à utiliser efficacement la commande docker images pour lister et filtrer les images Docker sur votre système. Vous commencerez par lister toutes les images de premier niveau, puis explorerez comment lister les images par nom et tag spécifiques.

De plus, vous approfondirez le filtrage des images en fonction de leur statut "dangling" (suspendu) et en appliquant des labels. Enfin, vous apprendrez à personnaliser le format de sortie de la commande docker images en utilisant un modèle personnalisé pour un affichage d'informations plus adapté.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/ls -.-> lab-555157{{"Comment utiliser la commande docker image ls pour lister et filtrer les images"}} docker/pull -.-> lab-555157{{"Comment utiliser la commande docker image ls pour lister et filtrer les images"}} docker/images -.-> lab-555157{{"Comment utiliser la commande docker image ls pour lister et filtrer les images"}} docker/build -.-> lab-555157{{"Comment utiliser la commande docker image ls pour lister et filtrer les images"}} end

Lister toutes les images de premier niveau

Dans cette étape, vous apprendrez à lister toutes les images Docker de premier niveau sur votre système. Les images de premier niveau sont celles que vous avez explicitement téléchargées (pull) ou construites. Elles ne sont pas des images intermédiaires créées pendant le processus de construction.

Pour lister toutes les images de premier niveau, vous pouvez utiliser la commande docker images. Cette commande affichera un tableau avec des informations sur chaque image, incluant le dépôt (repository), le tag, l'ID de l'image, la date de création et la taille.

Essayons de lister les images. Comme il s'agit d'un environnement vierge, il pourrait y avoir peu d'images initialement. Nous téléchargerons une image dans une étape ultérieure.

Ouvrez votre terminal dans le répertoire ~/project et exécutez la commande suivante :

docker images

Vous devriez voir un résultat similaire à ceci (le résultat exact peut varier selon les images présentes) :

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE

Ce résultat indique qu'il n'y a actuellement aucune image de premier niveau sur votre système.

Lister des images par nom et tag

Dans cette étape, vous apprendrez à lister des images Docker spécifiques par leur nom et tag. Ceci est particulièrement utile lorsque vous avez de nombreuses images et souhaitez en trouver une en particulier.

La commande docker images permet de spécifier un nom de dépôt (repository) et optionnellement un tag pour filtrer les résultats. Le format est docker images [REPOSITORY[:TAG]].

Commençons par télécharger une image pour avoir quelque chose à lister. Nous allons télécharger l'image hello-world, une très petite image utilisée pour les tests.

Exécutez la commande suivante pour télécharger l'image hello-world :

docker pull hello-world

Vous devriez voir un résultat indiquant que l'image est en cours de téléchargement :

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Maintenant que nous avons l'image hello-world, listons uniquement cette image en utilisant son nom.

Exécutez la commande suivante :

docker images hello-world

Le résultat devrait afficher uniquement l'image hello-world :

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    <image_id>     <created_time>   <size>

Vous pouvez également spécifier un tag. Comme nous avons téléchargé le tag latest, listons l'image hello-world avec le tag latest.

Exécutez la commande suivante :

docker images hello-world:latest

Le résultat sera identique à la commande précédente, car latest est le tag par défaut si aucun n'est spécifié :

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    <image_id>     <created_time>   <size>

Si vous essayez de lister une image qui n'existe pas, vous obtiendrez un résultat vide. Par exemple :

docker images non-existent-image

Résultat :

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE

Ceci confirme que vous pouvez filtrer les images par leur nom et tag.

Filtrer les images par statut "dangling" (orphelines)

Dans cette étape, vous apprendrez à filtrer les images Docker selon leur statut "dangling" (orphelines). Les images orphelines sont des couches qui n'ont aucune relation avec des images taguées. Elles résultent souvent de la construction de nouvelles versions d'une image, laissant les anciennes couches sans tag. Ces images orphelines occupent de l'espace disque et peuvent être nettoyées.

Pour filtrer les images par leur statut "dangling", vous pouvez utiliser le flag --filter avec la clé dangling. La valeur peut être true pour afficher uniquement les images orphelines ou false pour afficher uniquement les images non orphelines.

Commençons par créer une image orpheline. Nous pouvons le faire en construisant une nouvelle image qui remplace une existante. Nous utiliserons un simple Dockerfile pour cela.

Créez un fichier nommé Dockerfile dans votre répertoire ~/project avec le contenu suivant :

FROM alpine
CMD ["echo", "Hello, world!"]

Ce Dockerfile est très simple. Il utilise l'image alpine comme base et affiche simplement "Hello, world!" lorsqu'un conteneur est exécuté à partir de celle-ci.

Maintenant, construisons une image à partir de ce Dockerfile et taguons-la.

Exécutez la commande suivante pour construire l'image et la taguer comme my-image:latest :

docker build -t my-image:latest .

Vous devriez voir un résultat indiquant le processus de construction :

[+] Building
...
Successfully built <image_id>
Successfully tagged my-image:latest

Modifions légèrement le Dockerfile et reconstruisons-le avec le même tag. Cela créera une nouvelle image avec le tag my-image:latest, et l'image précédente qui avait ce tag deviendra orpheline.

Éditez le Dockerfile dans votre répertoire ~/project pour changer la commande :

FROM alpine
CMD ["echo", "Hello again!"]

Maintenant, reconstruisez l'image avec le même tag :

docker build -t my-image:latest .

Vous verrez un résultat similaire à la construction précédente, mais un nouvel ID d'image sera généré. L'image précédente avec le tag my-image:latest est maintenant orpheline.

Listons toutes les images pour voir l'image orpheline.

Exécutez la commande :

docker images

Vous pourriez voir une image avec <none> dans les colonnes REPOSITORY et TAG. C'est une image orpheline.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
my-image      latest    <new_image_id> <created_time>   <size>
<none>        <none>    <old_image_id> <created_time>   <size>
hello-world   latest    <image_id>     <created_time>   <size>

Maintenant, filtrons pour afficher uniquement les images orphelines en utilisant le flag --filter dangling=true.

Exécutez la commande :

docker images --filter dangling=true

Vous devriez voir uniquement l'image orpheline :

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
<none>        <none>    <old_image_id> <created_time>   <size>

Pour voir uniquement les images non orphelines, vous pouvez utiliser --filter dangling=false.

Exécutez la commande :

docker images --filter dangling=false

Cela listera toutes les images qui ne sont pas orphelines :

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
my-image      latest    <new_image_id> <created_time>   <size>
hello-world   latest    <image_id>     <created_time>   <size>

Ceci démontre comment filtrer les images selon leur statut "dangling".

Filtrer les images par label

Dans cette étape, vous apprendrez à filtrer les images Docker en fonction de leurs labels. Les labels sont des paires clé-valeur que vous pouvez attacher aux objets Docker, y compris les images. Ils sont utiles pour organiser et identifier les images.

Pour filtrer les images par label, utilisez le flag --filter avec la clé label. La valeur peut être un label spécifique (label=<clé>=<valeur>) ou simplement la clé du label (label=<clé>) pour trouver les images ayant ce label, quelle que soit sa valeur.

Commençons par créer un nouveau Dockerfile incluant des labels.

Créez un fichier nommé Dockerfile.labeled dans votre répertoire ~/project avec le contenu suivant :

FROM alpine
LABEL maintainer="LabEx User"
LABEL version="1.0"
CMD ["echo", "Image with labels!"]

Ce Dockerfile est similaire au précédent mais inclut deux instructions LABEL.

Maintenant, construisons une image à partir de ce Dockerfile et taguons-la.

Exécutez la commande suivante pour construire l'image et la taguer comme labeled-image:latest :

docker build -t labeled-image:latest -f Dockerfile.labeled .

Vous devriez voir un résultat indiquant le processus de construction et le taggage réussi de l'image.

Listons maintenant toutes les images pour voir la nouvelle image créée.

Exécutez la commande :

docker images

Vous devriez voir labeled-image dans la liste avec les autres images.

REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
labeled-image   latest    <image_id>     <created_time>   <size>
my-image        latest    <new_image_id> <created_time>   <size>
<none>          <none>    <old_image_id> <created_time>   <size>
hello-world     latest    <image_id>     <created_time>   <size>

Maintenant, filtrons les images par le label maintainer. Nous filtrerons les images où le label maintainer a la valeur "LabEx User".

Exécutez la commande :

docker images --filter label=maintainer=LabEx User

Vous devriez voir uniquement labeled-image :

REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
labeled-image   latest    <image_id>     <created_time>   <size>

Vous pouvez également filtrer par la simple présence d'une clé de label, quelle que soit sa valeur. Filtrons les images ayant le label version.

Exécutez la commande :

docker images --filter label=version

Vous devriez à nouveau voir uniquement labeled-image :

REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
labeled-image   latest    <image_id>     <created_time>   <size>

Ceci démontre comment filtrer les images en utilisant des labels.

Formater la sortie en utilisant un modèle personnalisé

Dans cette étape, vous apprendrez à formater la sortie de la commande docker images en utilisant un modèle personnalisé. Ceci est utile lorsque vous souhaitez extraire des informations spécifiques sur les images dans un format lisible par machine ou dans un format personnalisé lisible par l'homme.

La commande docker images prend en charge le flag --format, qui vous permet de spécifier un modèle Go pour contrôler la sortie. Vous pouvez utiliser divers espaces réservés dans le modèle pour accéder à différents attributs de l'image.

Essayons de formater la sortie pour afficher uniquement l'ID de l'image et le nom du dépôt, séparés par deux points.

Exécutez la commande suivante :

docker images --format "{{.ID}}: {{.Repository}}"

Vous devriez voir une sortie similaire à ceci, listant l'ID de l'image et le dépôt pour chaque image :

<image_id>: hello-world
<new_image_id>: my-image
<old_image_id>: <none>
<image_id>: labeled-image

Notez que l'image orpheline affiche toujours <none> pour le dépôt.

Vous pouvez également inclure d'autres attributs comme le tag et la taille. Formatons la sortie pour afficher le dépôt, le tag et la taille, séparés par des tabulations.

Exécutez la commande suivante :

docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

L'utilisation de table au début de la chaîne de formatage crée une sortie sous forme de tableau avec des en-têtes.

Vous devriez voir une sortie similaire à ceci :

REPOSITORY          TAG                 SIZE
hello-world         latest              <size>
my-image            latest              <size>
<none>              <none>              <size>
labeled-image       latest              <size>

Vous pouvez trouver une liste des espaces réservés disponibles dans la documentation Docker pour la commande docker images. Voici quelques-uns des plus courants :

  • .ID : ID de l'image
  • .Repository : Nom du dépôt de l'image
  • .Tag : Tag de l'image
  • .Created : Date de création de l'image
  • .Size : Taille de l'image
  • .Containers : Nombre de conteneurs utilisant l'image

Expérimentez avec différents modèles pour voir comment vous pouvez personnaliser la sortie. Par exemple, pour lister l'ID de l'image et sa date de création :

docker images --format "{{.ID}} created at {{.Created}}"

Cette étape conclut le lab sur le listing et le filtrage des images Docker. Vous avez appris à lister toutes les images, filtrer par nom, tag, statut "dangling" et labels, et formater la sortie en utilisant des modèles personnalisés.

Résumé

Dans ce lab, vous avez appris à utiliser la commande docker images pour lister et filtrer les images Docker. Vous avez commencé par lister toutes les images principales sur votre système. Ensuite, vous avez pratiqué le listing d'images spécifiques par leur nom et leur tag après avoir téléchargé l'image hello-world.

Vous avez également exploré comment filtrer les images selon leur statut "dangling" (orphelines) et par des labels spécifiques. Enfin, vous avez appris à personnaliser le format de sortie de la commande docker images en utilisant un modèle personnalisé, vous permettant d'afficher uniquement les informations dont vous avez besoin.