Docker est une technologie de conteneurisation de logiciels qui aide les développeurs à créer et à déployer des applications sur des plateformes disparates allant de l’ordinateur de bureau au cloud.
Un instantané – ou plan – du code source, des dépendances et des outils nécessaires à la création d’une application dans un conteneur Docker est appelé image. Les applications Docker qui nécessitent des données persistantes peuvent s’appuyer sur un stockage appelé volume qui est indépendant du système d’exploitation sous-jacent.
Une organisation efficace des images, des volumes et des conteneurs est importante lors de l’utilisation de Docker. Les incarnations inutilisées de ces ressources 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 vidant les images (individuellement et en une seule fois), les volumes et les conteneurs. Et nous utiliserons l’interface de ligne de commande (CLI) docker
pour accomplir ces tâches rapidement.
Comment retirer 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 CLI peut cibler certaines images pour les retirer.
Tout d’abord, examinons 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 d’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 étiquette. Dans ce cas, il s’agit d’une image « pendante » : une image qui n’est pas actuellement 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 se trouve 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 que les images consomment.
Retirer toutes les images inutilisées
Dans l’exemple de liste ci-dessus, nous avons une image qui traîne. Cependant, il est possible qu’une image sans nom ni étiquette soit active. Par exemple, elle aurait pu être utilisée pour démarrer un conteneur en faisant référence à son ID.
Pour supprimer en toute sécurité toutes les images qui sont réellement en suspens, 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 à nouveau lister nos images pour voir le résultat 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 étiquette a disparu.
Retirer une image spécifique par son nom
Vous pouvez cibler une image à supprimer en faisant référence à son nom :
$ docker image rm <image_name>
Remarque : Vous ne pouvez pas facilement retirer les images encore en cours d’utilisation. 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 de l’abréviation rmi pour la suppression des images
L’interface CLI de Docker dispose d’une approche abrégée pour retirer les images dans l’alias rmi
. Son utilisation pour supprimer une image par son nom ressemble à ceci :
$ docker rmi demo
Untagged: demo:latest
Deleted: sha256:2cbc27836df4a7707e746e28368f1fdecfefbfb813aae06611ca6913116b80b4
Nous utiliserons rmi
pour les exemples suivants de suppression d’images.
Retirer toutes les images non étiquetées
Les images non marqué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 marquées dans Docker, utilisez la commande docker rmi
avec un filtre. Vous pouvez fournir des filtres basés sur des critères spécifiques en utilisant 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 étiquetées :
$ docker rmi $(docker images -f "dangling=true" -q)
L’option -q
de la commande ci-dessus affiche les ID de toutes les images non marquées. Tous ces ID sont ensuite passés comme 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 « dangling ».
Retirer 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>
Retirer une image spécifique par nom et étiquette
Vous pouvez supprimer une image spécifique avec son nom et son étiquette en utilisant la commande docker rmi
.
Par exemple, si vous avez plusieurs images avec le même nom mais des étiquettes différentes, vous pouvez supprimer une image particulière 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 dépôt.
Retirer toutes les images avec la dernière étiquette
Dans Docker, la balise « latest » fait référence à la version la plus récente d’une image Docker particulière. La balise latest est souvent utilisée comme balise par défaut pour les images Docker. Elle est automatiquement attribuée à 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 l’étiquette « latest » :
$ docker rmi $(docker images | grep "latest" | awk '{print $3}')
La commande ci-dessus est divisée en 2 parties. D’abord, elle obtient la liste des ID d’images, puis elle transmet cette liste comme argument à la commande docker rmi
.
Retirer des images d’un dépôt distant
Pour supprimer une image d’un dépôt distant, tel que Docker Hub, vous devez d’abord vous connecter au compte à l’aide du Docker CLI.
Une fois que vous êtes 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 dépôt. De même, vous ne pouvez pas supprimer les images utilisées par les conteneurs en cours d’exécution.
Retirer plusieurs images d’un dépôt distant
Pour supprimer plusieurs images d’un référentiel distant, vous pouvez utiliser la commande docker rmi
suivie des ID ou des étiquettes de l’image. Par exemple :
docker rmi my_repo/image_tag_1 my_repo/image_tag_2 my_repo/image_tag_3
Cette commande supprimera les trois images portant les étiquettes image_tag_1
, image_tag_2
et image_tag_3
du référentiel my_repo
.
Comment retirer les 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 des volumes permet également de maintenir l’environnement Docker à jour et d’éviter les problèmes causés par des données périmées.
Ces commandes détruisent définitivement toutes les données stockées dans un volume, utilisez-les donc avec prudence.
Retirer tous les volumes inutilisés
Dans Docker, la suppression des volumes inutilisés est aussi essentielle que la suppression des images ou des conteneurs.
Pour libérer de l’espace disque, vous pouvez utiliser la commande docker volume prune
.
Retirer 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 retirer des conteneurs Docker
À mesure que vous travaillez davantage 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 occuper les précieuses ressources du disque, ralentissant votre système et vous mettant potentiellement en danger.
Retirer tous les conteneurs arrêtés
La commande docker container prune
permet de 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 procéder. 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 devrez d’abord les arrêter ou utiliser une autre commande.
Retirer un conteneur spécifique par ID
Dans Docker, vous pouvez supprimer un conteneur spécifique par ID en utilisant l’adresse docker rm command
avec l’ID du conteneur. Tout d’abord, obtenez tous les ID de conteneur à l’aide de la commande 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 en utilisant l’indicateur -f :
$ docker rm -f 1ce3cdeb4035
Retirer un conteneur spécifique par son nom
Docker fournit une commande polyvalente docker rm
pour supprimer les 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.
Retirer 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 de docker ps -q
liste les ID des conteneurs en cours d’exécution. Ensuite, les ID sont transmis à la commande docker rm
, qui supprime tous les conteneurs.
Notez que cette commande ne supprime que les conteneurs en cours d’exécution. Si vous souhaitez supprimer tous les conteneurs, y compris ceux qui sont arrêtés, vous pouvez utiliser la commande suivante à la place :
$ docker rm $(docker ps -a -q)
Résumé
Cet article vous a expliqué comment retirer 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 permettant de supprimer toutes les images inutilisées, non marquées ou spécifiques par ID ou par nom. Vous avez également appris les commandes permettant de supprimer tous les conteneurs arrêtés ou un conteneur spécifique par ID ou par nom.
La suppression des images, volumes et 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 souvent à améliorer 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 dès maintenant.
Laisser un commentaire