Contactez-nous

Gérer les images : `docker images`, `docker rmi`

Apprenez à utiliser les commandes Docker `docker images` pour lister vos images locales et `docker rmi` pour les supprimer proprement et libérer de l'espace disque.

Organiser votre bibliothèque d'images Docker

Les images Docker sont les plans à partir desquels vos conteneurs sont créés. Au fur et à mesure que vous téléchargez des images depuis des registres comme Docker Hub ou que vous construisez les vôtres, votre machine locale accumule ces images. Il devient alors essentiel de savoir comment les lister pour visualiser ce que vous possédez et comment les supprimer pour libérer de l'espace disque et maintenir un environnement de développement propre et organisé. Les deux commandes fondamentales pour cette gestion sont `docker images` et `docker rmi`.

Maîtriser ces commandes vous permet de garder le contrôle sur les ressources utilisées par Docker sur votre système. Savoir quelles images sont présentes, comprendre leur taille et pouvoir retirer celles qui sont obsolètes ou inutilisées est une compétence de base pour tout utilisateur de Docker.

Lister les images disponibles localement : `docker images`

La commande `docker images` (ou son alias plus long `docker image ls`) est utilisée pour afficher la liste des images Docker qui ont été téléchargées ou construites sur votre machine locale.

Syntaxe de base :

docker images

La sortie standard présente plusieurs colonnes informatives :

  • REPOSITORY : Le nom du dépôt de l'image (ex: `nginx`, `python`, `votre_compte/votre_app`).
  • TAG : L'étiquette de version ou de variante de l'image (ex: `latest`, `3.9-alpine`, `1.0`). Une image peut avoir plusieurs tags.
  • IMAGE ID : L'identifiant unique de l'image (suite hexadécimale courte).
  • CREATED : La date et l'heure de création de l'image.
  • SIZE : La taille de l'image sur le disque.

Quelques options utiles pour `docker images` :

  • Lister toutes les images (y compris intermédiaires) : `docker images -a` ou `docker images --all`. Cela montre également les couches d'images intermédiaires créées pendant les builds, qui n'ont généralement pas de nom de dépôt ni de tag (`:`).
  • Afficher uniquement les ID d'images : `docker images -q` ou `docker images --quiet`. Très pratique pour passer les ID à d'autres commandes (comme `docker rmi`).
  • Filtrer les images : L'option `-f` ou `--filter` permet de sélectionner des images selon certains critères. Un filtre très courant est `dangling=true` pour lister les images "orphelines" (couches intermédiaires non taguées et non utilisées par une image taguée).

Exemples de filtrage :

# Lister les images orphelines
docker images -f dangling=true

# Lister les images du dépôt 'ubuntu'
docker images ubuntu

# Lister les images ubuntu taguées '20.04'
docker images ubuntu:20.04

Supprimer des images locales : `docker rmi`

Lorsque vous n'avez plus besoin d'une image (parce qu'elle est obsolète, remplacée par une nouvelle version, ou simplement inutilisée), vous pouvez la supprimer de votre système local avec la commande `docker rmi` (pour "Remove Image", ou son alias `docker image rm`).

Syntaxe de base :

docker rmi 
# ou
docker rmi 
Vous pouvez spécifier l'image par son ID unique ou par la combinaison de son nom de dépôt et de son tag.

Important : Vous ne pouvez pas supprimer une image si elle est actuellement utilisée par un conteneur, qu'il soit en cours d'exécution ou arrêté. Si vous essayez, Docker renverra une erreur indiquant qu'un conteneur dépend de cette image. Vous devrez d'abord supprimer le ou les conteneurs concernés (`docker rm `) avant de pouvoir supprimer l'image.

Exemple :

# Essayer de supprimer une image utilisée (échouera si un conteneur l'utilise)
docker rmi my_app:latest
# Error response from daemon: conflict: unable to remove repository reference "my_app:latest" (must force) - container a1b2c3d4e5f6 is using its referenced image 1234567890ab

# Il faut d'abord supprimer le conteneur
docker rm a1b2c3d4e5f6

# Ensuite, supprimer l'image
docker rmi my_app:latest

L'option `-f` ou `--force` permet de forcer la suppression d'une image. Son utilisation principale est de supprimer un tag spécifique sans supprimer l'image sous-jacente si celle-ci possède d'autres tags, ou de supprimer une image même si elle est référencée par des conteneurs arrêtés (cela ne supprimera pas les conteneurs eux-mêmes). A utiliser avec prudence.

# Supposons que l'image 123... a les tags 'app:v1' et 'app:latest'
docker rmi app:v1 # Supprime juste le tag v1, l'image et le tag latest restent
docker rmi -f 123... # Tentera de supprimer l'image et tous ses tags, même si des conteneurs arrêtés l'utilisent

Vous pouvez supprimer plusieurs images en une seule commande en listant leurs ID ou noms:tag :

docker rmi image1:tag image2:tag 1a2b3c4d5e6f

Une commande très utile pour nettoyer les images orphelines (dangling) est de combiner `docker images` et `docker rmi` :

# Lister les ID des images orphelines
docker images -f dangling=true -q

# Supprimer toutes les images orphelines
# Attention: vérifiez la liste avant d'exécuter la suppression !
docker rmi $(docker images -f dangling=true -q)
Cette dernière commande utilise la substitution de commande `$(...)` pour passer les ID listés par `docker images` en arguments à `docker rmi`.