Supprimez les images, les volumes et les conteneurs Docker en quelques secondes
Publié: 2023-03-03Docker est une technologie de conteneurisation de logiciels qui aide les développeurs à créer et à déployer des applications sur des plates-formes disparates allant du bureau au cloud.
Un instantané - ou plan - du code source, des dépendances et des outils nécessaires pour créer une application dans un conteneur Docker est appelé image. Les applications Docker qui nécessitent des données persistantes peuvent s'appuyer sur des volumes de stockage appelés volumes indépendants du système d'exploitation sous-jacent.
L'organisation efficace des images, des volumes et des conteneurs est importante lors de l'utilisation de Docker. Des incarnations inutilisées de ces actifs peuvent s'accumuler, occupant un espace disque précieux et affectant éventuellement les performances du système.
Cet article explore différentes façons de maintenir l'organisation du système en effaçant les images (à la fois individuellement et toutes à la fois), les volumes et les conteneurs. Et nous utiliserons l'interface de ligne de commande docker
(CLI) pour effectuer ces tâches rapidement.
Comment supprimer des images Docker
La suppression des images obsolètes ou inutiles de Docker est essentielle pour maintenir un système propre et organisé. Voyons comment la CLI peut cibler certaines images à supprimer.
Examinons d'abord les images dans un environnement Docker avec la commande docker image ls
:
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 60 seconds ago 7.05MB <none> <none> 85b412789704 2 days ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB
La liste des images ci-dessus a révélé des images nommées my_image et demo , toutes deux étiquetées latest . Une troisième image n'a ni nom ni tag. Dans ce cas, il s'agit d'une image « pendante » : une image qui n'est actuellement pas utilisée par un conteneur. Cette image pendante résulte d'une reconstruction de my_image (un scénario courant). La version précédente de l'image est toujours sur le système de fichiers, mais n'est pas utilisée actuellement.
La liste affiche également les 12 premiers caractères de l'ID à 64 caractères de chaque image, les dates de création et l'espace de stockage consommé par les images.
Supprimer toutes les images inutilisées
Dans l'exemple de liste ci-dessus, nous avons une image pendante. Cependant, il est possible qu'une image sans nom ni tag soit active. Par exemple, il aurait pu être utilisé pour démarrer un conteneur en référençant son ID.
Pour supprimer en toute sécurité toutes les images réellement pendantes, vous pouvez utiliser la commande docker image prune
:
$ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Deleted Images: deleted: sha256:85b412789704c17e9c5e7edc97b2f64c748bbdae7eaa44d3fe2cc21a87acad3d Total reclaimed space: 7.05MB
Nous allons lister à nouveau nos images pour voir les résultats de notre travail :
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 70 seconds ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB
Après le processus d'élagage, l'image sans nom ni tag a disparu.
Supprimer une image spécifique par nom
Vous pouvez cibler une image à supprimer en faisant référence à son nom :
$ docker image rm <image_name>
Remarque : Vous ne pouvez pas supprimer facilement les images encore utilisées. Vous devez arrêter ou supprimer les conteneurs en cours d'exécution qui utilisent les images. Bien que cela ne soit généralement pas recommandé, vous pouvez forcer la suppression d'une image active à l'aide de l'indicateur -f
:
$ docker image rm <image_name> -f
Utilisation du raccourci rmi pour supprimer des images
La CLI Docker a une approche abrégée pour supprimer les images dans l'alias rmi
. L'utiliser pour supprimer une image par son nom ressemble à ceci :
$ docker rmi demo Untagged: demo:latest Deleted: sha256:2cbc27836df4a7707e746e28368f1fdecfefbfb813aae06611ca6913116b80b4
Nous utiliserons rmi
pour les exemples de suppression d'image suivants.
Supprimer toutes les images non étiquetées
Les images non balisées occupent toujours un espace disque précieux, ce qui ralentit de plus en plus votre système au fil du temps.
Pour éliminer toutes les images non balisées dans Docker, utilisez la commande docker rmi
avec un filtre. Vous pouvez fournir des filtres basés sur des critères spécifiques à l'aide de l'option -f
(à ne pas confondre avec l'indicateur -f
disponible pour image rm
pour forcer une action).
Le filtre dangling=true
est utilisé pour identifier les images non taguées :
$ docker rmi $(docker images -f "dangling=true" -q)
L'option -q
de la commande ci-dessus affiche les ID d'image de toutes les images non balisées. Tous ces identifiants sont ensuite passés en arguments à docker rmi
pour les supprimer.
Ce filtre utilise le mot-clé "dangling", mais comme indiqué ci-dessus, certaines images sans balises peuvent en fait être actives. Vous serez averti si une image sélectionnée par ce filtre n'est pas vraiment pendante.
Supprimer une image spécifique par ID
Vous pouvez utiliser la commande docker rmi
pour supprimer une image spécifique en faisant référence à son ID :
$ docker rmi <image_id>
Supprimer une image spécifique par nom et tag
Vous pouvez supprimer une image spécifique avec son nom et sa balise à l'aide de la commande docker rmi
.
Par exemple, si vous avez plusieurs images avec le même nom mais des balises différentes, vous pouvez en supprimer une en particulier en utilisant ce format :
$ docker rmi <image_name>:<tag>
Cette méthode est pratique lorsque vous souhaitez supprimer une version spécifique d'une image au lieu de supprimer toutes les images liées à un référentiel.
Supprimer toutes les images avec la dernière balise
Dans Docker, la balise « latest » fait référence à la version la plus récente d'une image Docker particulière. La dernière balise est souvent utilisée comme balise par défaut pour les images Docker. Il est automatiquement attribué à la version la plus récente d'une image, sauf si une autre balise est spécifiée explicitement.
Docker fournit une commande pour supprimer toutes les images avec la balise « latest » :
$ docker rmi $(docker images | grep "latest" | awk '{print $3}')
La commande ci-dessus est divisée en 2 parties. Il obtient d'abord la liste des ID d'image, puis il transmet cette liste comme argument à la commande docker rmi
.
Supprimer des images d'un référentiel distant
Pour supprimer une image d'un référentiel distant, tel que Docker Hub, vous devez d'abord vous connecter au compte à l'aide de Docker CLI.
Une fois connecté, il vous suffit d'utiliser la commande docker rmi
pour supprimer l'image. La commande docker rmi
peut supprimer les images locales et distantes :
docker rmi my_repo/my_image_tag
Notamment, vous ne pouvez supprimer que les images qui ont été poussées vers le référentiel. De même, vous ne pouvez pas supprimer les images utilisées par les conteneurs en cours d'exécution.
Supprimer plusieurs images d'un référentiel distant
Pour supprimer plusieurs images d'un référentiel distant, vous pouvez utiliser la commande docker rmi
suivie des ID ou des balises d'image. Par exemple:
docker rmi my_repo/image_tag_1 my_repo/image_tag_2 my_repo/image_tag_3
Cela supprimera les trois images avec les balises image_tag_1
, image_tag_2
et image_tag_3
du référentiel my_repo
.
Comment supprimer des volumes Docker
Les volumes Docker peuvent occuper beaucoup d'espace disque, surtout s'ils contiennent de grandes quantités de données ou plusieurs sauvegardes. En supprimant les volumes qui ne sont plus nécessaires, vous réduisez le risque de violation de données et vous vous assurez que les données sensibles ne sont pas accessibles aux utilisateurs non autorisés. La suppression régulière de volumes peut également maintenir l'environnement Docker à jour et éviter les problèmes causés par des données obsolètes.
Ces commandes détruisent définitivement toutes les données stockées dans un volume, utilisez-les donc avec prudence.
Supprimer tous les volumes inutilisés
Dans Docker, la suppression des volumes inutilisés est aussi critique que la suppression des images ou des conteneurs.
Pour libérer de l'espace de stockage sur disque, vous pouvez utiliser la commande docker volume prune
.
Supprimer un volume spécifique par nom
La suppression d'un volume spécifique dans Docker est utile pour supprimer les volumes inutilisés. Voici la commande pour supprimer un volume :
docker volume rm my_volume_name
Avec la commande ci-dessus, le volume my_volume_name sera supprimé. Docker produit une erreur si vous essayez de supprimer un volume utilisé. Vous pouvez vérifier les volumes disponibles à l'aide de la commande docker volume ls
.
Comment supprimer les conteneurs Docker
Au fur et à mesure que vous travaillez avec Docker, vous pouvez accumuler de nombreux conteneurs inutilisés qui occupent les ressources du disque. Si vous ne les supprimez pas, ils peuvent s'accumuler au fil du temps et accaparer de précieuses ressources disque, ralentissant votre système et vous mettant potentiellement en danger.
Supprimer tous les conteneurs arrêtés
La commande docker container prune
peut supprimer tous les conteneurs arrêtés dans Docker. Ici, la commande crée une liste de tous les conteneurs arrêtés qui seront supprimés et demande une confirmation avant de continuer. Cela permet de récupérer de l'espace disque et de maintenir un environnement Docker propre et organisé tout en vous permettant de vérifier que vous ne perdez rien d'important :
$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 4df4c47c4df4 d35bcec20bce
Notez que seuls les conteneurs arrêtés peuvent être supprimés avec cette commande. Si vous devez supprimer des conteneurs en cours d'exécution, vous devez d'abord les arrêter ou utiliser une autre commande.
Supprimer un conteneur spécifique par ID
Dans Docker, vous pouvez supprimer un conteneur spécifique par ID à l'aide de docker rm command
avec l'ID du conteneur. Tout d'abord, récupérez tous les ID du conteneur à l'aide de docker ps command
:
$ docker ps -a -q 1ce3cdeb4035 06b79541e25c fa98f1804e3e $ docker rm 1ce3cdeb4035
La commande ci-dessus ne fonctionne que si le conteneur est dans un état arrêté. Si le conteneur est en cours d'exécution, vous devez le supprimer de force à l'aide de l'indicateur -f :
$ docker rm -f 1ce3cdeb4035
Supprimer un conteneur spécifique par nom
Docker fournit une commande docker rm
polyvalente pour supprimer les deux conteneurs par nom et par ID.
Par exemple, si vous avez un conteneur nommé web_server , vous pouvez le supprimer à l'aide de la commande suivante :
$ docker rm web_server
Tout d'abord, il est important d'arrêter le conteneur. Docker fournit la commande docker stop
pour arrêter un conteneur spécifique.
Supprimer tous les conteneurs en cours d'exécution
Pour supprimer tous les conteneurs en cours d'exécution, vous pouvez utiliser la commande docker rm
:
$ docker rm $(docker ps -q)
L'utilisation docker ps -q
répertorie les ID des conteneurs en cours d'exécution. Après cela, les ID sont transmis à la commande docker rm
, qui supprime tous les conteneurs.
Notez que cette commande supprimera uniquement les conteneurs en cours d'exécution. Si vous souhaitez supprimer tous les conteneurs, y compris ceux arrêtés, vous pouvez utiliser la commande suivante à la place :
$ docker rm $(docker ps -a -q)
Résumé
Cet article explique comment supprimer des images, des volumes et des conteneurs Docker. Vous avez appris diverses méthodes pour maintenir un système propre et organisé. Il couvrait les commandes pour supprimer toutes les images inutilisées, non étiquetées ou spécifiques par ID ou nom. Vous avez également appris les commandes pour supprimer tous les conteneurs arrêtés ou un conteneur spécifique par ID ou nom.
La suppression d'images, de volumes et de conteneurs Docker est un processus simple qui peut vous aider à gérer les composants inutilisés, à récupérer un espace disque précieux et à améliorer souvent les performances du système.
C'est cette simplicité qui attire les développeurs vers Docker, et il n'y a pas de moyen plus simple de déployer une application développée dans Docker qu'avec la plateforme d'hébergement d'applications de Kinsta. Vous pouvez l'essayer gratuitement maintenant.