Comment utiliser la commande docker network prune pour supprimer les réseaux inutilisés

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à gérer efficacement vos réseaux Docker en utilisant la commande docker network prune. Nous commencerons par créer plusieurs réseaux personnalisés pour simuler un scénario du monde réel avec plusieurs réseaux.

Après avoir créé ces réseaux, vous apprendrez à lister et à identifier quels réseaux ne sont actuellement pas utilisés. Enfin, vous pratiquerez l'utilisation de la commande docker network prune pour supprimer ces réseaux inutilisés, y compris comment appliquer des filtres pour une suppression plus ciblée. Cette expérience pratique vous dotera des compétences nécessaires pour maintenir votre environnement Docker propre et optimisé.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/SystemManagementGroup -.-> docker/prune("Remove Unused Docker Objects") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/ls -.-> lab-555178{{"Comment utiliser la commande docker network prune pour supprimer les réseaux inutilisés"}} docker/ps -.-> lab-555178{{"Comment utiliser la commande docker network prune pour supprimer les réseaux inutilisés"}} docker/rm -.-> lab-555178{{"Comment utiliser la commande docker network prune pour supprimer les réseaux inutilisés"}} docker/prune -.-> lab-555178{{"Comment utiliser la commande docker network prune pour supprimer les réseaux inutilisés"}} docker/network -.-> lab-555178{{"Comment utiliser la commande docker network prune pour supprimer les réseaux inutilisés"}} end

Créer des réseaux personnalisés

Dans cette étape, nous apprendrons à créer des réseaux personnalisés dans Docker. Par défaut, Docker fournit trois réseaux : bridge, host et none. Cependant, vous pouvez créer vos propres réseaux personnalisés pour isoler les conteneurs et contrôler la manière dont ils communiquent entre eux.

Pour créer un réseau personnalisé, nous utilisons la commande docker network create. Créons un réseau bridge nommé my-network-1.

docker network create my-network-1

Vous devriez voir une sortie similaire à celle-ci, indiquant que le réseau a été créé avec succès :

<network_id>

Maintenant, créons un autre réseau bridge nommé my-network-2.

docker network create my-network-2

Encore une fois, vous devriez voir un identifiant de réseau en sortie.

Nous pouvons vérifier que les réseaux ont été créés en listant tous les réseaux disponibles à l'aide de la commande docker network ls.

docker network ls

La sortie affichera une liste de réseaux, y compris les réseaux par défaut et les deux réseaux personnalisés que nous venons de créer (my-network-1 et my-network-2).

Lister les réseaux pour identifier ceux qui ne sont pas utilisés

Dans cette étape, nous apprendrons à lister les réseaux Docker et à identifier ceux qui ne sont actuellement utilisés par aucun conteneur. Cela est utile pour nettoyer votre environnement Docker et libérer des ressources.

Nous avons déjà utilisé la commande docker network ls à l'étape précédente pour lister tous les réseaux. Exécutons - la à nouveau pour voir l'état actuel.

docker network ls

La sortie affiche l'identifiant du réseau, le nom, le pilote (driver) et la portée (scope) de chaque réseau. Notez que les réseaux my-network-1 et my-network-2 que nous avons créés sont listés.

Pour identifier les réseaux inutilisés, nous pouvons utiliser la commande docker network prune avec le drapeau --dry - run. Ce drapeau nous permet de voir quels réseaux seraient supprimés sans les supprimer réellement.

docker network prune --dry-run

La sortie de cette commande listera les réseaux qui ne sont pas attachés à aucun conteneur en cours d'exécution et qui seraient supprimés. Étant donné que nous n'avons attaché aucun conteneur à my-network-1 ou my-network-2, ils devraient apparaître dans la sortie du test (dry run).

Exécutons un simple conteneur attaché à my-network-1 pour voir comment cela affecte la sortie de docker network prune --dry - run. Nous utiliserons l'image hello - world, qui est très petite. Tout d'abord, téléchargez l'image :

docker pull hello-world

Maintenant, exécutez un conteneur en utilisant cette image et attachez - le à my-network-1. Le drapeau -d exécute le conteneur en mode détaché (en arrière - plan).

docker run -d --network my-network-1 hello-world

Vous verrez un identifiant de conteneur en sortie.

Maintenant, exécutons à nouveau la commande docker network prune --dry - run.

docker network prune --dry-run

Cette fois, my-network-1 ne devrait pas apparaître dans la liste des réseaux à supprimer car il est utilisé par le conteneur hello - world en cours d'exécution. my-network-2, qui n'est pas utilisé, devrait toujours être listé.

Pour arrêter et supprimer le conteneur hello - world, trouvez d'abord son identifiant à l'aide de docker ps.

docker ps

Ensuite, arrêtez le conteneur en utilisant docker stop <container_id> et supprimez - le en utilisant docker rm <container_id>. Remplacez <container_id> par l'identifiant réel de la sortie de docker ps.

docker stop <container_id>
docker rm <container_id>

Maintenant, si vous exécutez à nouveau docker network prune --dry - run, my-network-1 et my-network-2 devraient être listés comme réseaux à supprimer, car ils ne sont plus utilisés.

Supprimer tous les réseaux inutilisés

Dans cette étape, nous apprendrons à supprimer tous les réseaux inutilisés en utilisant la commande docker network prune. Cette commande est utile pour nettoyer votre environnement Docker et libérer des ressources en supprimant les réseaux qui ne sont actuellement attachés à aucun conteneur.

Avant de supprimer les réseaux inutilisés, listons - les à nouveau pour voir lesquels sont actuellement présents.

docker network ls

Vous devriez voir les réseaux par défaut (bridge, host, none) et les réseaux personnalisés que nous avons créés à la première étape (my-network-1 et my-network-2). Étant donné que nous avons arrêté et supprimé le conteneur hello - world à l'étape précédente, my-network-1 et my-network-2 devraient maintenant être inutilisés.

Pour supprimer tous les réseaux inutilisés, exécutez simplement la commande docker network prune sans aucun drapeau. Docker vous demandera de confirmer l'action.

docker network prune

Vous verrez un message demandant confirmation, comme celui - ci :

WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N]

Tapez y et appuyez sur Entrée pour procéder à la suppression.

La sortie listera les réseaux qui ont été supprimés et la quantité totale d'espace récupéré.

Maintenant, listons les réseaux à nouveau pour confirmer que my-network-1 et my-network-2 ont été supprimés.

docker network ls

Vous ne devriez maintenant voir que les réseaux par défaut (bridge, host, none) dans la liste.

Supprimer les réseaux inutilisés avec des filtres

Dans cette étape, nous apprendrons à supprimer les réseaux inutilisés en utilisant des filtres. Les filtres vous permettent de supprimer sélectivement des réseaux en fonction de certains critères, tels que les étiquettes (labels) ou la date de création.

Tout d'abord, créons quelques nouveaux réseaux avec des étiquettes afin de démontrer l'utilisation des filtres. Nous allons créer network-a avec l'étiquette env=dev et network-b avec l'étiquette env=test.

docker network create --label env=dev network-a
docker network create --label env=test network-b

Vous devriez voir les identifiants des réseaux en sortie pour les deux commandes.

Maintenant, listons les réseaux pour voir les nouveaux réseaux créés avec leurs étiquettes.

docker network ls

Vous devriez voir network-a et network-b dans la liste.

Pour supprimer des réseaux en fonction d'un filtre, nous utilisons le drapeau --filter avec la commande docker network prune. Par exemple, pour supprimer tous les réseaux inutilisés avec l'étiquette env=dev, nous pouvons utiliser le filtre label=env=dev.

Effectuons d'abord un test (dry run) pour voir quels réseaux seraient supprimés avec ce filtre.

docker network prune --filter label=env=dev --dry-run

La sortie devrait montrer network-a comme le réseau qui serait supprimé, car il a l'étiquette env=dev et n'est actuellement pas utilisé.

Maintenant, supprimons réellement les réseaux inutilisés avec l'étiquette env=dev.

docker network prune --filter label=env=dev

Vous serez invité à confirmer. Tapez y et appuyez sur Entrée.

La sortie montrera que network-a a été supprimé.

Listons les réseaux à nouveau pour confirmer que network-a a disparu, mais que network-b (avec l'étiquette env=test) est toujours présent.

docker network ls

Vous devriez voir network-b dans la liste, mais pas network-a.

Vous pouvez également filtrer en fonction d'autres critères, tels que les réseaux créés avant une certaine date. Cependant, le filtrage par étiquettes est un moyen courant et utile de gérer vos réseaux.

Résumé

Dans ce laboratoire (lab), nous avons appris à gérer les réseaux Docker, en nous concentrant particulièrement sur l'identification et la suppression des réseaux inutilisés. Nous avons commencé par créer des réseaux ponts (bridge networks) personnalisés en utilisant la commande docker network create, ce qui a démontré comment ajouter de nouveaux réseaux en plus des réseaux par défaut. Nous avons ensuite utilisé la commande docker network ls pour lister tous les réseaux disponibles et vérifier la création de nos réseaux personnalisés.

Ensuite, nous avons exploré comment identifier les réseaux inutilisés. Nous avons appris que la commande docker network prune, en particulier avec le drapeau --dry-run, est un outil précieux pour prévisualiser quels réseaux ne sont pas attachés à aucun conteneur et sont donc des candidats à la suppression. Cette étape est cruciale pour comprendre l'impact de la suppression avant de réellement supprimer des réseaux.