GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Gardez vos images Docker gérables avec Docker Image Prune

Les choses peuvent devenir compliquées assez facilement lorsque vous vous concentrez sur le déploiement de vos projets et les tests dans des conteneurs Docker. Vous aurez besoin de nettoyer votre espace de travail de temps en temps. Alors pourquoi ne pas garder votre environnement Docker sans encombrement avec docker image prune et d'autres commandes pratiques ?

Ce tutoriel vous apprendra les nombreuses façons de garder votre environnement Docker propre et gérable, ainsi que quelques bonnes pratiques pour apprivoiser les complexités potentielles.

Commençons !

Prérequis

Pour suivre ce tutoriel, vous devez disposer des éléments suivants :

  • Un PC Windows 10 :ce didacticiel utilise Windows 10 et lancera des commandes Docker dans PowerShell, mais tout système d'exploitation exécutant Docker convient.
  • Docker :ce didacticiel utilise Docker Desktop v3.6.0 pour l'hôte de conteneur.
  • Un conteneur Docker existant à nettoyer

Suppression d'images Docker

Un environnement Docker se compose de nombreux composants différents allant des images, des conteneurs, de la mise en réseau, etc. Vous trouverez de nombreux composants différents à nettoyer. Commençons ce processus de nettoyage en supprimant d'abord toutes les anciennes images dont vous n'avez plus besoin. Mais ne vous inquiétez pas, si vous supprimez des images et créez un Dockerfile qui nécessite ces images supprimées, Docker les téléchargera automatiquement à nouveau.

Si vous avez besoin de supprimer des images inutiles que vous avez téléchargées dans le passé, le rm la commande est votre ami. Cette commande supprime les images et conteneurs, mais le didacticiel se concentrera d'abord sur les images.

Si vous avez un ou plusieurs conteneurs utilisant actuellement l'image que vous souhaitez supprimer, vous devez d'abord arrêter les conteneurs utilisant cette image avec le docker stop commande. Pour plus d'informations, consultez l'article ATA Utiliser les conteneurs Docker Stop sans tout gâcher !

Notez que vous ne pouvez pas supprimer les images Docker à moins d'arrêter les conteneurs qui utilisent l'image.

Pour supprimer une image avec docker rm , vous devez d'abord trouver l'ID de l'image. Pour ce faire, exécutez le docker image ls commande. L'docker image ls La commande lit Docker et renvoie toutes les images que vous avez actuellement, y compris l'ID de chaque image.

Vous pouvez également exécuter les docker images commande pour lister les images les plus récemment créées.

docker image ls

Ci-dessous, vous pouvez voir le résultat du docker image ls commande dans une liste de table avec des colonnes REPOSITORY , TAG , ID D'IMAGE , CRÉÉ et TAILLE .

Une fois que vous connaissez l'ID d'image, fournissez cet ID d'image au docker image rm commande, comme indiqué ci-dessous. Une fois que vous avez fait cela, Docker supprimera l'image avec l'ID spécifié.

# Remove only the images with the specified image ID
docker image rm image_id

Suppression des images Docker "pendantes"

Au fur et à mesure que vous commencez à créer plus de conteneurs et à télécharger plus d'images, il y a de fortes chances que vous ayez diverses images qui n'ont pas de conteneur associé. Ces images sont appelées images « pendantes » ou « parasites » et ne sont actuellement pas utilisées par Docker.

Pour économiser de l'espace disque et garder les choses en ordre, nettoyons toutes ces images pendantes. Pour ce faire, exécutez docker image prune . Cette commande pruneaux ou supprimez les images qui n'ont pas de conteneur construit à partir d'elles.

docker image prune

Si vous souhaitez supprimer TOUTES les images avec un conteneur associé ou non, vous n'avez pas besoin de trouver un ID d'image particulier ; exécutez docker image prune -a passer au nucléaire et les supprimer tous.

Suppression des conteneurs Docker

Une fois que vous avez nettoyé vos images Docker, il est temps de passer aux conteneurs. Heureusement, vous verrez que la tâche de supprimer des conteneurs est similaire à la suppression d'images à l'aide de rm commande.

Tout d'abord, recherchez l'ID du conteneur avec le docker container ls commande pour supprimer les conteneurs, comme indiqué ci-dessous. Cette commande renvoie tous les conteneurs, y compris l'CONTAINER ID . Le -al est facultatif pour vous montrer tous les conteneurs (en cours d'exécution ou non) et uniquement la dernière version de chaque conteneur.

docker container ls -al # List all Docker containers

Une fois que vous connaissez l'ID du conteneur, exécutez docker rm et transmettez-lui l'ID de conteneur que vous souhaitez supprimer.

# Remove only the containers with the specified container ID
docker rm container_id

Vous pouvez également spécifier plusieurs ID de conteneur en séparant chaque ID par un espace, comme indiqué ci-dessous. Cette commande supprime (rm ) les conteneurs du didacticiel Alpine et Docker 101 avec les ID de conteneur f8ec07177218 et 6fac840d9382 .

docker rm f8ec07177218 6fac840d9382

Suppression de tous les conteneurs Docker arrêtés

Peut-être avez-vous beaucoup de conteneurs arrêtés qui ne font que prendre de la place. Comme les images pendantes, les conteneurs arrêtés ne servent à rien pour le moment.

Pour supprimer tous les conteneurs arrêtés :

1. Exécutez le docker commande ci-dessous pour tout lister (ls --all ) Conteneurs Docker. Remarquez tous les conteneurs avec un STATUS sur Sortie il y a (X) Y heures . Tous ces conteneurs sont actuellement arrêtés.

docker container ls --all

2. Maintenant, exécutez le docker container prune commande pour supprimer tous les conteneurs arrêtés. Lorsque cette commande s'exécute, vous verrez quels ID de conteneur la commande a supprimés.

docker container prune

3. Enfin, exécutez docker container ls -a à nouveau pour voir que chaque conteneur arrêté a été retiré.

Si vous préférez ne pas spécifier manuellement un ou plusieurs ID de conteneur, vous pouvez également imbriquer des commandes Docker à l'aide de $() pour lister les conteneurs et les supprimer sur une seule ligne avec docker container rm $(docker container ls -aq) . Le docker container la commande utilise le q commutateur pour ne pas renvoyer les conteneurs à la console. Une fois que Docker a collecté tous les conteneurs, il exécute ensuite docker container rm contre chacun.

Suppression des conteneurs Docker par des règles de filtrage

Peut-être avez-vous de nombreux conteneurs différents, et les retirer chacun par ID serait pénible. S'ils ont tous des caractéristiques communes, vous pouvez créer un filtre pour supprimer uniquement les conteneurs correspondant à une requête spécifique.

Pour supprimer plusieurs conteneurs correspondant à une requête spécifique, utilisez le filter paramètre ou indicateur de filtrage sur le docker container prune commande. Ce paramètre permet de spécifier soit un until attribut pour filtrer les conteneurs créés avant une date ou un label argument pour faire correspondre les conteneurs avec/sans une étiquette spécifique.

Par exemple, vous pouvez supprimer tous les conteneurs arrêtés qui ont été créés plus de 10h en exécutant la commande ci-dessous.

docker container prune --filter "until=10h"

Entrez O pour confirmer la suppression du conteneur Docker, comme indiqué ci-dessous. Une fois la suppression terminée, vous verrez quels conteneurs sont supprimés et l'espace total récupéré.

Nettoyage des conteneurs en imbriquant les commandes Docker

Toutes les commandes précédentes couvertes vous obligeaient à arrêter chaque conteneur au préalable. Mais que se passe-t-il si les conteneurs fonctionnent ? Au lieu d'arrêter chaque conteneur individuellement, vous pouvez à la place imbriquer des commandes Docker dans une commande de suppression pour arrêter tous les conteneurs et les supprimer simultanément.

Prenez des précautions supplémentaires lorsque vous retirez des conteneurs en cours d'exécution. La suppression peut avoir un impact sur certaines applications ou processus qui dépendent de ce conteneur Docker.

Le docker imbriqué ($(docker container ) la commande ci-dessous répertorie discrètement tous les conteneurs (-aq ) en mémoire, y compris ceux en cours d'exécution. La liste des conteneurs est ensuite transmise au docker externe commande pour supprimer (rm ) les conteneurs de la liste.

Vous pouvez voir ci-dessous que l'exécution de la commande imbriquée supprime tous les conteneurs en une seule fois, comme indiqué ci-dessous. Ainsi, lorsque vous vérifiez la liste des conteneurs, vous n'obtiendrez pas de sortie car la liste est vide.

Supprimer automatiquement les conteneurs avec le --rm Drapeau

Les commandes précédentes sont utilisées pour supprimer les conteneurs Docker uniquement après que la liste Docker a été encombrée. Mais pourquoi attendre que la liste Docker soit encombrée ? Si vous êtes un travailleur de type "propre au fur et à mesure", la mesure de nettoyage préventif est à portée de main avec le --rm drapeau.

Le --rm indicateur dans une docker run La commande est pratique si vous ne faites que tester des choses sur votre machine pendant une courte période et que vous ne gérez pas de fichiers ou de déploiements critiques à l'intérieur de ce conteneur.

L'docker run la syntaxe de commande ci-dessous ajoute un conteneur Docker avec le nom de votre choix (container_name ) et une image Docker (organization/base_image ) de la bibliothèque Docker Hub. Mais alors le --rm flag supprime automatiquement le conteneur.

docker run --rm --name container_name organization/base_image

Nettoyage des volumes Docker

Docker ne se compose pas seulement d'images et de conteneurs. L'écosystème Docker se compose également de volumes de stockage. En utilisant la même méthode générale de recherche d'ID et d'élagage des éléments, vous pouvez également nettoyer les volumes de stockage.

Comme pour les conteneurs et les images, exécutez docker volume ls pour voir tous les ID de volume que vous avez dans le système.

docker volume ls

Ci-dessous, vous pouvez voir que dans ce didacticiel, trois volumes sont répertoriés.

Exécutez maintenant le docker commande ci-dessous pour supprimer tous les volumes inutilisés (volume prune ).

Pour supprimer les réseaux docker inutilisés, exécutez plutôt cette commande :docker network prune

docker volume prune

Ci-dessous, vous pouvez voir que la commande supprime tous les volumes locaux car ils n'étaient pas utilisés au moment de la suppression. Ainsi, lorsque vous répertoriez tous les volumes Docker, vous n'obtenez qu'une liste de tables vide.

Suppression simultanée de tous les composants Docker inutilisés

Tout au long de ce didacticiel, vous avez choisi les composants Docker à supprimer. Peut-être travaillez-vous dans un environnement de test et souhaitez-vous simplement tout nettoyer en même temps. Au lieu de nettoyer chaque composant individuellement, nettoyez-le entièrement avec docker system prune !

Le docker system prune La commande supprime les conteneurs non exécutés, les réseaux inutilisés, les images inutilisées et le cache de construction pour le moteur Docker.

docker system prune

Aajoutez le -f flag pour forcer ou supprimer les messages d'avertissement et confirmer la suppression des éléments du système Docker, comme ceci :docker system prune -f

Ci-dessous, vous pouvez voir une invite vous demandant si vous souhaitez continuer à supprimer les éléments du système Docker ou non. Confirmez en saisissant Y pour continuer.

Conclusion

Dans ce didacticiel, vous avez exploré les nombreuses façons de nettoyer les images Docker avec le docker image prune commande, suppression des conteneurs avec docker container rm , et plus encore.

Avec ces nouvelles connaissances, pourquoi ne pas développer vos propres méthodes préférées de nettoyage de vos images Docker ? Peut-être faire un inventaire des actifs Docker ou un bon système de marquage qui vous permet de nommer correctement vos projets et d'éviter de supprimer des images ou des conteneurs critiques ?


Docker
  1. Comment déplacer des images Docker entre les hôtes

  2. Comment partager des images Docker avec d'autres

  3. Comment modifier les images Docker

  4. Comment installer Nextcloud avec Docker sur votre serveur Linux

  5. Comment créer et configurer automatiquement des images Docker personnalisées avec Dockerfile - Partie 3

Comment mettre à jour les images Docker vers la dernière version

Comment copier des fichiers avec Docker cp dans votre conteneur Docker

Comment utiliser Docker Commit pour modifier les images de conteneur

Guide complet pour supprimer les images Docker

Comment créer une image Docker personnalisée avec Dockerfile

Partage d'images Docker sur Docker Hub