Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Comment répertorier et supprimer l'image Docker ?

sécurité docker
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Docker est une plate-forme bien connue qui vous permet de gérer l'exécution et la livraison de vos applications sous forme de conteneurs qui regroupent le système d'exploitation et les bibliothèques dépendantes avec votre application.

Nous couvrirons la gestion des images Docker, principalement un briefing sur les manières de lister Docker images et obtenir les informations requises, puis s'appuyer sur cet apprentissage pour supprimer une ou plusieurs images de manière efficace.

Alors, commençons.

Listing Docker Images

Pour répertorier les images Docker extraites, utilisez :

abhisheknair@geekflare:~$ docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
redis         latest    aa4d65e670d6   9 days ago      105MB
mysql         latest    c60d96bd2b77   10 days ago     514MB
ubuntu        latest    c29284518f49   2 weeks ago     72.8MB
nginx         latest    4cdc5dd7eaad   3 weeks ago     133MB
hello-world   latest    d1165f221234   4 months ago    13.3kB
redis         4.0       191c4017dcdd   15 months ago   89.3MB
abhisheknair@geekflare:~$

Comme avec les autres docker commandes, il prend en charge images commande avec plusieurs options.

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

Si vous courez docker images sans aucune option, il vous montrera les images de haut niveau comme docker image ls, leur référentiel et leurs balises 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 weeks ago     133MB
hello-world   latest    d1165f221234   4 months ago    13.3kB
redis         4.0       191c4017dcdd   15 months ago   89.3MB
abhisheknair@geekflare:~$

Ces images ont des couches intermédiaires qui augmentent la convivialité, accélèrent le processus de génération et réduisent l'utilisation du disque, ce qui n'est pas indiqué par la commande ci-dessus. Le SIZE est l'espace combiné occupé par l'image et toutes ses images parentes. Si vous enregistrez le contenu de l'image en tant que fichier Tar lorsque vous docker save une image, elle sera égale à cette taille répertoriée.

Une image est répertoriée plusieurs fois si elle a plusieurs noms de référentiel ou balises bien que l'image unique identifiée par son IMAGE ID utilise le SIZE répertorié 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 weeks ago     133MB
hello-world   latest    d1165f221234   4 months ago    13.3kB
redis         4.0       191c4017dcdd   15 months ago   89.3MB
abhisheknair@geekflare:~$

Répertorier les images par référentiel et balise

Pour répertorier toutes les images qui appartiennent à un référentiel particulier, spécifiez le nom du référentiel comme :

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

Vous pouvez également spécifier le nom du référentiel avec une balise 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:~$

Répertorier les ID d'image complets

Pour lister toutes les images sans tronquer le IMAGE ID, Utiliser:

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

Répertorier les condensés d'images

Les images Docker qui utilisent le format v2 ou ultérieur ont un identifiant adressable par le contenu appelé digest. Pour répertorier les valeurs de condensé d'image, utilisez --digest marquer comme:

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

Avec une 2.0 registre, vous pouvez utiliser ces résumés avec push, pull, create, run et rmi commandes. Cela fonctionne aussi avec FROM commande dans un Dockerfile.

Filtrage de la sortie

docker la commande prend en charge le filtrage avec images en utilisant --filter drapeau. Les filtres actuellement pris en charge sont :

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

De plus, vous pouvez utiliser plusieurs filtres en les combinant comme :

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

Mise en situation :

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        latest    4cdc5dd7eaad   3 weeks ago   133MB
abhisheknair@geekflare:~$

Formatage de la sortie

docker images prend en charge la sortie de formatage qui peut être nécessaire pour l'imbrication avec d'autres commandes, scripts ou autre. Ce sont les espaces réservés pris en charge pour le --format drapeau:

placeholder Description
.ID ID de l'image
.Repository Référentiel d'images
.Tag Balise d'image
.Digest Condensé d'images
.CreatedSince Temps écoulé depuis la création de l'image
.CreatedAt L'heure à laquelle l'image a été créée
.Size Taille du disque de l'image

À titre d'exemple, la commande ci-dessous imprime la sortie sans en-tête et génère le ID et 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 répertorier toutes les images avec leur référentiel et leur balise dans un format de tableau, vous pouvez utiliser :

abhisheknair@geekflare:~$ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID       REPOSITORY    TAG
aa4d65e670d6   redis         latest
c60d96bd2b77   mysql         latest
c29284518f49   ubuntu        latest
4cdc5dd7eaad   nginx         latest
d1165f221234   hello-world   latest
191c4017dcdd   redis         4.0
abhisheknair@geekflare:~$

Removing Docker Images

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

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

Pour supprimer une seule image, spécifiez simplement le nom de l'image :

abhisheknair@geekflare:~$ docker image rm redis
Untagged: redis:latest
Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
abhisheknair@geekflare:~$

Ou pour supprimer plusieurs images, spécifiez plusieurs noms d'images séparés par un espace :

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

Retrait de la force

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

abhisheknair@geekflare:~$ docker image rm nginx
Error response from daemon: conflict: 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 utiliser -f flag qui force la suppression de l'image (attention).

abhisheknair@geekflare:~$ docker image rm nginx -f
Untagged: nginx:latest
Untagged: nginx@sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720
Deleted: sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f
abhisheknair@geekflare:~$

Tailler les images

Dans certaines situations, les images inutilisées consomment de l'espace disque ou vous avez simplement besoin d'un nettoyage des anciennes images en suspens. Vous pouvez nettoyer ces images inutilisées en utilisant :

$ docker image prune

Mise en situation :

abhisheknair@geekflare:~$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
abhisheknair@geekflare:~$

Si vous souhaitez également nettoyer toutes les images qui ne sont utilisées par aucun conteneur, utilisez -a drapeau:

abhisheknair@geekflare:~$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: mariadb:latest
untagged: mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d
deleted: sha256:fd17f57768027456cc17987058474fb21d3c51e9dd764e4497c1dfe92ff058db
deleted: sha256:a638f04e531b032c81a84bda59a36d1df3c4cec62560c403bc2edb642bce79ba
deleted: sha256:af7a7e7bf72e7ad0c5227995f219d9094fafbe0ac973dbe7eb4ab190a5a58ba5
deleted: sha256:a0cfd81b291e8da6bca0731c9db70fe1b61d176906b1cf05ade1cd61572ffaaa
deleted: sha256:38b00cb5dab64398092fab2b18563af1ef4a9445dec8a531ac725059dc218f41
deleted: sha256:6e60d29d2d76125f989f503a78729984f7ba3e26bfbf7038d5ab644b8755b7c2
deleted: sha256:1dafdd60e471b4c1f5244cfe1d20d79f934f504ef42180b637886be2b0b74370
deleted: sha256:2fffe8e736cdb99359084e297f4bb54a4cac879366bd3e4333d3dbe966f8e9a6
deleted: sha256:f728037697805db453111266541c202c74971484ef359ea29b9c60064ed9e47e
deleted: sha256:28155a13db3520201db576bf6d56b68fc08ef27b1c4c49dbfeadef523d35c5f0
deleted: sha256:7555a8182c42c7737a384cfe03a3c7329f646a3bf389c4bcd75379fc85e6c144
untagged: redis:latest
untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68

Total reclaimed space: 445.2MB
abhisheknair@geekflare:~$

Vous pouvez également utiliser --force or -f indicateur pour procéder au nettoyage sans confirmation ni utilisation --filter flag pour fournir des valeurs de filtre (par exemple 'until= ') à la prune commander.

Mise en situation :

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

Or

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

Utilisation de la commande rmi

Vous pouvez également utiliser rmi commande avec docker pour supprimer les images.

Il supprime (et supprime les balises) une ou plusieurs images du nœud Docker. Si une image a plusieurs balises, l'utilisation de cette commande avec la balise comme paramètre supprime uniquement la balise. Si la balise est la seule pour l'image, l'image et la balise sont supprimées.

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 le -f option comme avec docker image rm commander.

Mise en situation :

abhisheknair@geekflare:~$ docker rmi alpine
Untagged: alpine:latest
Untagged: alpine@sha256:adab3844f497ab9171f070d4cae4114b5aec565ac772e2f2579405b78be67c96
Deleted: 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

À de nombreuses occasions, vous devrez peut-être arrêter tous les conteneurs et 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 de force tous les conteneurs en cours d'exécution. Ensuite, nous pouvons procéder à la suppression des images liées en utilisant :

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

Summary

Docker est un outil polyvalent qui est un élément essentiel de l'arsenal des ingénieurs DevOps d'aujourd'hui et fait partie d'autres technologies à la mode comme Kubernetes. La gestion des images Docker est l'un des éléments essentiels de la gestion et du dépannage d'un déploiement Docker.

Vous devriez maintenant avoir une idée de base des capacités qui docker CLI commander propose avec ses commandes comme image, images et rmi. Leurs indicateurs offrent une personnalisation supplémentaire 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 connexes.

Merci à nos commanditaires
Plus de bonnes lectures sur DevOps
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise 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, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder