Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En DevOps Dernière mise à jour : 24 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Docker est une plateforme bien connue qui vous permet de gérer, d'exécuter et d'expédier vos applications sous forme de conteneurs qui empaquettent le système d'exploitation et les bibliothèques dépendantes avec votre application

Nous allons couvrir la gestion des images Docker, principalement en expliquant comment lister les images Docker et obtenir les informations nécessaires, puis en nous basant sur cet apprentissage pour supprimer une ou plusieurs images de manière efficace

Commençons donc

Lister les images Docker

Pour lister les images Docker extraites, utilisez

abhisheknair@geekflare:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest aa4d65e670d6 il y a 9 jours 105MB
mysql latest c60d96bd2b77 il y a 10 jours 514MB
ubuntu latest c29284518f49 il y a 2 semaines 72.8MB

nginx

latest 4cdc5dd7eaad 3 semaines 133MB
hello-world latest d1165f221234 4 mois 13.3kB
redis 4.0 191c4017dcdd 15 mois 89.3MB
abhisheknair@geekflare:~$

Comme pour les autres commandes de docker, il supporte la commande images avec plusieurs options

 $ docker images [OPTIONS] [REPOSITORY[:TAG]]

Si vous exécutez docker images sans aucune option, il vous montrera les images de premier niveau comme docker image ls, leur dépôt et tags et leur taille sur le disque

abhisheknair@geekflare:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest c60d96bd2b77 10 days ago 514MB
ubuntu latest c29284518f49 2 weeks ago 72.8MB

nginx

latest 4cdc5dd7eaad 3 semaines 133MB
hello-world latest d1165f221234 4 mois 13.3kB
redis 4.0 191c4017dcdd 15 mois 89.3MB
abhisheknair@geekflare:~$

Ces images ont des couches intermédiaires qui augmentent la convivialité, accélèrent le processus de construction et réduisent l'utilisation du disque, ce qui n'apparaît pas dans la commande ci-dessus. La taille (SIZE ) est l'espace combiné occupé par l'image et toutes ses images parentes. Si vous sauvegardez le contenu de l'image en tant que fichier Tar lorsque vous sauvegardez une image avec docker, il sera égal à la taille listée

Une image est listée plusieurs fois si elle a plusieurs noms de dépôt ou tags bien que l'image unique identifiée par son IMAGE ID n'utilise la taille listée qu'une seule fois

Lister les images les plus récentes

abhisheknair@geekflare:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest c60d96bd2b77 10 days ago 514MB
ubuntu latest c29284518f49 2 weeks ago 72.8MB

nginx

latest 4cdc5dd7eaad 3 semaines 133MB
hello-world latest d1165f221234 4 mois 13.3kB
redis 4.0 191c4017dcdd 15 mois 89.3MB
abhisheknair@geekflare:~$

Lister les images par référentiel et par balise

Pour lister toutes les images qui appartiennent à un dépôt particulier, spécifiez le nom du dépôt comme

abhisheknair@geekflare:~$ docker images redis
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest aa4d65e670d6 il y a 9 jours 105MB
redis 4.0 191c4017dcdd il y a 15 mois 89.3MB
abhisheknair@geekflare:

~$
Vous pouvez également spécifier le nom du dépôt avec un tag pour une sortie plus filtrée

abhisheknair@geekflare:~$ docker images redis:4.0
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 4.0 191c4017dcdd 15 months ago 89.3MB
abhisheknair@geekflare:~

$

Liste des ID d'images complètes

Pour lister toutes les images sans tronquer le IMAGE ID, utilisez

abhisheknair@geekflare:~$ docker images --no-trunc
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 9 days ago 105MB
mysql latest sha256 :c60d96bd2b771a8e3cae776e02e55ae914a6641139d963defeb3c93388f61707 il y a 10 jours 514MB
ubuntu dernier sha256:c29284518f497b8c5f49933e74e43ca5221e69c8251e780427f7d12f716625ff il y a 2 semaines 72.8MB
nginx latest sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f Il y a 3 semaines 133MB
hello-world latest sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726 Il y a 4 mois 13.3kB
redis 4.0 sha256:191c4017dcdd3370f871a4c6e7e1d55c7d9abed2bebf3005fb3e7d12161262b8 Il y a 15 mois 89.3MB
abhisheknair@geekflare:~$

Lister les images

Les images Docker qui utilisent le format v2 ou plus récent ont un identifiant adressable par le contenu connu sous le nom de digest. Pour lister les valeurs de digest d'image, utilisez le drapeau --digest comme

abhisheknair@geekflare:~$ docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
redis latest sha256:cd0c68c5479f2db4b9e2c5fbdb7a8acb77625322dd5b474578515422d3ddb59 aa4d65e670d6 9 days ago 105MB
mysql latest sha256 :8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd c60d96bd2b77 il y a 10 jours 514MB
ubuntu latest sha256 :b3e2e47d016c08b3396b5ebe06ab0b711c34e7f37b98c9d37abe794b71cea0a2 c29284518f49 Il y a 2 semaines 72.8MB
nginx dernier sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720 4cdc5dd7eaad il y a 3 semaines 133MB
hello-world dernier sha256 :df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e d1165f221234 Il y a 4 mois 13.3kB
redis 4.0 sha256:2e03fdd159f4a08d2165ca1c92adde438ae4e3e6b0f74322ce013a78ee81c88d 191c4017dcdd Il y a 15 mois 89.3MB
abhisheknair@geekflare:~$

Avec un registre 2.0, vous pouvez utiliser ces digests avec les commandes push, pull, create, run et rmi. Cela fonctionne également avec la commande FROM dans un fichier Docker

Filtrer la sortie

la commande Docker supporte le filtrage des images en utilisant l'option --filter. Les filtres actuellement pris en charge sont les suivants

  • dangling (booléen - vrai ou faux)
  • étiquette(label=<key> ou label=<key>=<value>)
  • avant(<image-name>[:<tag>], <image id> ou <image@digest>)- filtre les images créées avant l'id ou les références données
  • depuis(<image-name>[:<tag>], <image id> ou <image@digest>)- filtre les images créées depuis l'id ou les références données
  • reference (motif d'une référence d'image) - filtre les images dont la référence correspond au motif spécifié

En outre, vous pouvez utiliser plusieurs filtres en les combinant comme suit

$ docker images --filter "<key1>=<value1>" --filter "<key2>=<value2>"

Exemple

abhisheknair@geekflare:~$ docker images --filter "before=redis" --filter "since=hello-world"
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest c60d96bd2b77 10 days ago 514MB
ubuntu latest c29284518f49 2 weeks ago 72.8MB

nginx

dernier 4cdc5dd7eaad il y a 3 semaines 133MB
abhisheknair@geekflare:~$

Formatage de la sortie

les images docker prennent en charge le formatage de la sortie qui peut être nécessaire pour l'imbrication avec d'autres commandes, l'écriture de scripts ou autre. Voici les paramètres pris en charge par l'option --format

Emplacement Description
.ID ID de l'image
référentiel Référentiel de l'image
.Tag Marqueur d'image
.digest Résumé de l'image
.CreatedSince Temps écoulé depuis la création de l'image
.CreatedAt Heure de création de l'image
taille Taille du disque de l'image

A titre d'exemple, la commande ci-dessous imprime la sortie sans en-tête et affiche l'ID et le Repository séparés par deux points ( : ) pour toutes les images

abhisheknair@geekflare:~$ docker images --format "{{.ID}} : {{.Repository}}"

aa4d65e670d6

: redis

c60d96bd2b77

: mysql

c29284518f49

: ubuntu

4cdc5dd7eaad

: nginx

d1165f221234

: hello-world
191c4017dcdd : redis
abhisheknair@geekflare:~$

Ou pour lister toutes les images avec leur dépôt et leur tag sous forme de tableau, vous pouvez utiliser

abhisheknair@geekflare:~$ docker images --format "table {{.ID}}\t{{.Repository}}\t{.Tag}}"
IMAGE ID REPOSITORY TAG

aa4d65e670d6 redis

dernier

c60d96bd2b77

mysql dernier

c29284518f49

ubuntu dernier

4cdc5dd7eaad

nginx dernier

d1165f221234

hello-world dernier
191c4017dcdd redis 4.0
abhisheknair@geekflare:~$

Suppression des images Docker

Pour supprimer une ou plusieurs images Docker du système, nous utilisons

$ docker image rm [OPTIONS] IMAGE [IMAGE...]

Pour supprimer une seule image, indiquez simplement le nom de l'image

abhisheknair@geekflare:~$ docker image rm redis
Non marqué : redis:latest
Non marqué : redis@sha256:cd0c68c5479f2db4b9e2c5fbdb7a8acb77625322dd5b4745785422d3ddb59
Supprimé : sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
Supprimé : sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
Supprimé : sha256 :22722fde392d188cfbe5bbd0c2451cc71cf5b000c0e5114c1066bb5e113ec9
Supprimé : sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
Supprimé : sha256 :188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
abhisheknair@geekflare:~$

Ou pour supprimer plusieurs images, spécifiez plusieurs noms d'images séparés par des espaces

abhisheknair@geekflare:~$ docker image rm redis mariadb
Non marqué : redis:latest
Non marqué : redis@sha256:cd0c68c5479f2db4b9e2c5fbdb7a8acb77625322dd5b4778515422d3ddb59
Supprimé : sha256 :aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
Supprimé : sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
Supprimé : sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
Supprimé : sha256 :38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
Supprimé : sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
Supprimé : sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
Untagged: mariadb:latest
Non marqué : mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d
Supprimé : sha256:fd17f57768027456cc179858474fb21d3c51e9dd764e4497c1dfe92ff058db
Supprimé : sha256:a638f04e531b032c81a84bda59a36d1df3c4cec62560c403bc2edb642bce79ba
Supprimé : sha256 :af7a7e7bf72e7ad0c5227995f219d9094fafbe0ac973dbe7eb4ab190a5a58ba5
Supprimé : sha256:a0cfd81b291e8da6bca0731c9db70fe1b61d176906b1cf05ade1cd61572ffaaa
Supprimé : sha256:38b00cb5dab64398092fab2b18563af1ef4a9445dec8a531ac725059dc218f41
Supprimé : sha256:6e60d29d2d76125f989f503a78729984f7ba3e26bff7038d5ab644b8755b7c2
Supprimé : sha256 :1dafdd60e471b4c1f5244cfe1d20d79f934f504ef42180b637886be2b0b74370
Supprimé : sha256 :2fffe8e736cdb99359084e297f4bb54a4cac879366bd3e4333d3dbe966f8e9a6
Supprimé : sha256:f728037697805db453111266541c202c74971484ef359ea29b9c60064ed9e47e
Supprimé : sha256:28155a13db3520201db576bf6d56b68fc08ef27b1c4c49dbfeadef523d35c5f0
Deleted: sha256:7555a8182c42c7737a384cfe03a3c7329f646a3bf389c4bcd75379fc85e6c144
abhisheknair@geekflare:~$

Forcer la suppression

Il peut y avoir des conteneurs en cours d'exécution qui utilisent les images que vous essayez de supprimer. Dans ce cas, Docker vous enverra un avertissement lorsque vous tenterez de supprimer une image référencée

abhisheknair@geekflare:~$ docker image rm nginx
Réponse d'erreur du démon : conflit : unable to remove repository reference "nginx" (must force) - container ce908eadf829 is using its referenced image 4cdc5dd7eaad
abhisheknair@geekflare:~$

Vous pouvez d'abord arrêter le conteneur associé puis réessayer ou bien utiliser le drapeau -f qui force la suppression de l'image (attention)

abhisheknair@geekflare:~$ docker image rm nginx -f
Non marqué : nginx:latest
Non marqué : nginx@sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720
Supprimé : sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f
abhisheknair@geekflare:~$

Élaguer les images

Dans certaines situations, les images inutilisées consomment de l'espace disque ou vous avez simplement besoin de nettoyer les vieilles images qui traînent. Vous pouvez nettoyer ces images inutilisées en utilisant

$ docker image prune

Exemple

abhisheknair@geekflare:~$ docker image prune
WARNING ! Cette opération supprimera toutes les images inutilisées.
Êtes-vous sûr de vouloir continuer ? [y/N] y
Espace total récupéré : 0B
abhisheknair@geekflare:~

$
Si vous souhaitez nettoyer toutes les images qui ne sont utilisées par aucun conteneur, utilisez l'option -a

abhisheknair@geekflare:~$ docker image prune -a
ATTENTION ! Cela supprimera toutes les images sans au moins un conteneur associé.
Êtes-vous sûr de vouloir continuer ? [y/N] y
Images supprimées :
untagged : mariadb:latest
untagged : mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d
deleted : sha256:fd17f57768027456cc17987058474fb21d3c51e9dd764e4497c1dfe92ff058db
deleted: sha256:a638f04e531b032c81a84bda59a36d1df3c4cec62560c403bc2edb642bce79ba
supprimé : sha256:af7a7e7bf72e7ad0c5227995f219d9094fafbe0ac973dbe7eb4ab190a5a58ba5
supprimé : sha256 :a0cfd81b291e8da6bca0731c9db70fe1b61d176906b1cf05ade1cd61572ffaaa
supprimé : sha256 :38b00cb5dab64398092fab2b18563af1ef4a9445dec8a531ac725059dc218f41
supprimé : sha256:6e60d29d2d76125f989f503a78729984f7ba3e26bfbf7038d5ab644b8755b7c2
supprimé : sha256:1dafdd60e471b4c1f5244cfe1d20d79f934f504ef42180b637886be2b0b74370
supprimé : sha256:2fffe8e736cdb99359084e297f4bb54a4cac879366bd3e4333d3dbe966f8e9a6
supprimé : sha256 :f728037697805db453111266541c202c74971484ef359ea29b9c60064ed9e47e
supprimé : sha256:28155a13db3520201db576bf6d56b68fc08ef27b1c4c49dbfeadef523d35c5f0
supprimé : sha256:7555a8182c42c7737a384cfe03a3c7329f646a3bf389c4bcd75379fc85e6c144
untagged: redis:latest
untagged : redis@sha256:cd0c68c5479f2db4b9e2c5fbdb7a8acb77625322dd5b4745785422d3ddb59
deleted : sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
deleted : sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
supprimé : sha256 :22722fde392d188cfbe5bbd0c2451cc71cf5b000c0e5114c1066bb5e113ec9
supprimé : sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
supprimé : sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
supprimé : sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68

Total de l'espace récupéré : 445.2MB
abhisheknair@geekflare:~$

Vous pouvez également utiliser les options --force ou -f pour procéder au nettoyage sans confirmation ou utiliser l'option --filter pour fournir des valeurs de filtrage (par exemple 'until=') à la commande prune

Exemple: $ docker image prune -a

$ docker image prune -a --force --filter "until=2021-01-04T00:00:00"

Ou

$ docker image prune --filter="label=deprecated"

Utilisation de la commande rmi

Vous pouvez également utiliser la commande rmi avec docker pour supprimer des images

Elle supprime (et décode) une ou plusieurs images du nœud Docker. Si une image a plusieurs tags, l'utilisation de cette commande avec le tag comme paramètre ne supprime que le tag. Si le tag est le seul pour l'image, l'image et le tag sont supprimés

Cette commande ne supprime pas les images d'un registre. De plus, vous ne pouvez pas supprimer une image d'un conteneur en cours d'exécution à moins d'utiliser l'option -f comme avec la commande docker image rm

Exemple

abhisheknair@geekflare:~$ docker rmi alpine
Non marqué : alpine:latest
Non marqué : alpine@sha256:adab3844f497ab9171f070d4cae4114b5aec565ac772e2f2579405b78be67c96
Supprimé : sha256 :d4ff818577bc193b309b355b02ebc9220427090057b54a59e73b79bdfe139b83
Deleted: sha256:72e830a4dff5f0d5225cdc0a320e85ab1ce06ea5673acfe8d83a7645cbd0e9cf
abhisheknair@geekflare:~$

Vous pouvez également utiliser --no-prune pour spécifier de ne pas supprimer les parents non marqués

Arrêter le conteneur et supprimer les images

Dans de nombreuses occasions, vous pouvez avoir besoin d'arrêter tous les conteneurs et de supprimer toutes les images associées. Vous pouvez le faire simplement avec

$ docker rm -vf $(docker ps -a -q)

La commande ci-dessus arrêtera et supprimera tous les conteneurs en cours d'exécution de force. Ensuite, nous pouvons procéder à la suppression des images liées à l'aide de : $ docker rmi -f $(docker ps -a -q)

$ docker rmi -f $(docker images -a -q)

Résumé

Docker est un outil polyvalent qui constitue une partie essentielle de l'arsenal de l'ingénieur DevOps d'aujourd'hui et fait partie d'autres technologies en vogue comme Kubernetes. La gestion des images Docker est l'une des parties essentielles de la gestion et du dépannage d'un déploiement Docker

Vous devriez maintenant avoir une idée de base des capacités qu'offre la commande CLI de Docker avec ses commandes comme image, images et rmi. Leurs drapeaux permettent une personnalisation plus poussée et offrent des options de filtrage et de personnalisation avancées qui peuvent aider à l'automatisation et à l'utilisation avancée

Utilisez docker [COMMAND] help pour plus de détails sur les options disponibles et les rubriques d'aide associées.

  • Abhishek Nair
    Auteur
Merci à nos sponsors
Plus de lectures sur DevOps
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus