Agence web » Actualités du digital » Comment élaguer les ressources Docker inutilisées –

Comment élaguer les ressources Docker inutilisées –

Docker vous permet de conditionner rapidement vos applications sous forme de conteneurs, ce qui permet de les exécuter n’importe où, de votre ordinateur portable à un cloud public. Après avoir utilisé Docker pendant un certain temps, vous pouvez accumuler un grand nombre de conteneurs, d’images et d’autres ressources redondants. Voici comment les ranger.

Docker ne supprime généralement rien à moins que vous ne le lui disiez. Cela signifie que les images que vous avez extraites et les conteneurs que vous avez créés traînent probablement toujours sur votre système, même s’ils ne sont plus utilisés.

Avoir trop de ressources redondantes peut rapidement conduire à une utilisation excessive du disque. Cela entraîne également une sortie beaucoup plus longue lors de la liste des ressources sur la ligne de commande, ce qui rend plus difficile la recherche des informations que vous recherchez.

Élagage des ressources pendantes

Une ressource «pendante» est tout objet Docker qui n’est actuellement pas associé à un conteneur. Cela inclut les images, les réseaux et les volumes Docker, ainsi que les conteneurs arrêtés. Dans le cas des images, une image est «pendante» si elle n’est pas balisée et n’a pas de références.

Docker fournit une seule commande de gestion interne pour vous permettre de purger toutes les ressources en suspens et les conteneurs arrêtés. Sauf si une ressource est utilisée par un fonctionnement conteneur, il sera supprimé.

docker system prune

L’exécution de la commande affiche une invite de confirmation qui répertorie les types de ressources à supprimer. Taper y et appuyez sur Entrée pour poursuivre la suppression. Vous pouvez désactiver la confirmation en passant le -f ou --force drapeau.

Les volumes ne sont pas supprimés par défaut. La suppression de volumes risque de perdre des données persistantes que vous souhaiterez peut-être conserver. Si vous souhaitez supprimer des volumes qui ne sont pas associés à un conteneur, transmettez le --volumes flag pour les inclure dans l’opération.

Vous pouvez supprimer encore plus de données d’image en passant le -a (ou --all) drapeau. Cela obligera Docker à tout supprimer inutilisé des images, pas seulement des images non référencées. Chaque image de votre système sera supprimée, sauf si au moins un conteneur en cours d’exécution en a besoin.

Utilisation de filtres lors de l’élagage

Les filtres peuvent être utilisés avec prune commander. Le filtrage vous donne plus de contrôle sur ce qui est supprimé. Deux filtres sont actuellement pris en charge, until et timestamp.

  • until – Le until Le filtre empêche la suppression des conteneurs, des images et des réseaux créés avant un moment donné. Vous pouvez spécifier l’heure dans plusieurs formats différents, tels qu’un horodatage Unix en secondes (par exemple 1614890000) ou une chaîne d’horodatage au format date (par exemple 2021-03-04T20:30:00).
  • label – Le label Le filtre contraint la suppression afin que seules les ressources avec une étiquette donnée soient supprimées. Les étiquettes peuvent être utilisées avec des conteneurs, des images, des réseaux et des volumes. Vous spécifiez les libellés comme label=key=value (clé égale à valeur), label!=key=value (clé différente de la valeur), label=key (a l’étiquette donnée) ou label!=key (n’a pas l’étiquette donnée).

Pour utiliser un filtre, passez-le au --filter drapeau:

docker system prune --filter until=2021-03-04T20:30:00 --filter label=foo=bar

Cette commande supprimerait les ressources avec le foo=bar label créé avant 20h30 le 4 mars. Toutes les ressources ne répondant pas à ces critères resteraient intactes.

Élagage des types de ressources individuels

Vous n’aurez pas toujours besoin d’utiliser docker system prune. Docker fournit également des commandes d’élagage plus granulaires. Ceux-ci peuvent être utilisés lorsque vous ne souhaitez supprimer qu’un seul type de ressource.

Le --force et --filter drapeaux pris en charge par docker system prune s’appliquent également aux commandes d’élagage individuelles répertoriées ci-dessous.

Conteneurs d’élagage

Les commandes Docker quotidiennes peuvent rapidement entraîner l’arrêt d’un grand nombre de conteneurs. Le problème est exaspéré si vous docker build images sans le --rm drapeau, car cela entraîne la conservation des couches de construction intermédiaires.

Courir docker container prune pour nettoyer les conteneurs arrêtés. Les conteneurs arrêtés n’apparaissent pas lorsque vous exécutez docker ps; pour les voir, vous devrez utiliser docker ps -a pour afficher tous les conteneurs de votre système.

Si vous souhaitez supprimer un conteneur individuel, utilisez le docker rm commande passant l’ID du conteneur. Vous pouvez l’obtenir en exécutant docker ps. Si le conteneur est en cours d’exécution, vous devrez utiliser le --force drapeau pour le supprimer.

Images d’élagage

Utilisation docker image prune pour supprimer toutes les images pendantes. Aimer docker system prune, cela affectera les images qui ne sont pas balisées ou qui ne sont référencées par aucun conteneur.

Ajouter le -a drapeau pour supprimer à la place toutes les images inutilisées. Cela purgera toutes les images de votre système qui ne sont pas requises par au moins un conteneur. Les images étiquetées seront également incluses, vous permettant d’effacer rapidement les anciennes extractions de Docker Hub.

Vous pouvez supprimer une image spécifique avec le docker rmi commander:

docker rmi wordpress:latest

Lorsqu’une image a plusieurs balises, docker rmi supprimera la balise donnée sans supprimer réellement l’image. Il sera supprimé une fois que la dernière balise aura été supprimée.

Réseaux d’élagage

Les réseaux Docker ne sont pas nettoyés automatiquement. Au fil du temps, vous pouvez vous retrouver avec un grand nombre d’entre eux. Cela encombre votre système avec des périphériques de ponts virtuels redondants et des entrées de table de routage. Courir docker network prune pour détruire tous les réseaux inutilisés et annuler les modifications apportées à la configuration de votre hôte.

Vous pouvez supprimer des réseaux individuels en exécutant docker rm my-network.

Volumes d’élagage

Docker ne supprimera jamais un volume. Ils stockent les données persistantes créées par vos conteneurs, de sorte qu’une suppression involontaire pourrait avoir des conséquences dévastatrices. Les volumes peuvent également être partagés par plusieurs conteneurs ou laissés en sommeil, prêts à être attachés à un autre conteneur à l’avenir.

Si vous souhaitez élaguer les volumes inutilisés, vous devez exécuter docker volume prune. Cela supprimera tous les volumes qui ne sont pas utilisés par au moins un conteneur. Les volumes individuels peuvent être supprimés en utilisant docker volume rm my-volume.

Prévenir l’accumulation future

Vous pouvez minimiser le risque d’accumulation de ressources redondantes à l’avenir en prenant soin de --rm drapeau à docker build et docker run commandes.

Lorsqu’il est utilisé avec build, cela entraînera la suppression des couches de construction intermédiaires (marquées comme <none>:<none> dans docker images) production. Cela peut représenter une réduction significative de l’utilisation du disque. Une nouvelle couche intermédiaire est normalement créée pour chaque instruction de votre Dockerfile. Vous pouvez généralement les supprimer à moins que vous n’ayez l’intention de les utiliser ultérieurement comme point de départ d’une nouvelle image.

Utilisant --rm avec docker run supprimera le conteneur dès la sortie de sa commande. C’est idéal lors de l’exécution d’un binaire dans un conteneur à usage unique. Ne passe pas --rm aux conteneurs que vous avez l’intention d’exécuter en permanence ou que vous souhaiterez peut-être démarrer et arrêter à la demande. Les exemples incluent les serveurs Web et de base de données qui exécutent un service au lieu d’une commande fournie par l’utilisateur.

Conclusion

L’élagage de vos ressources Docker peut libérer de l’espace disque et vous aider à travailler avec la CLI Docker. L’élimination des conteneurs et des images redondants facilite l’identification des ressources que vous recherchez.

Docker ne supprimera rien à moins que vous ne le lui disiez. Ça vaut le coup de courir docker system prune périodiquement pour garder votre système propre. Vous pouvez créer une tâche périodique qui l’exécute tous les mois, en utilisant le until filtre pour créer une période de rétention pour les ressources récemment ajoutées.

★★★★★