Introduction
Docker est devenu un outil essentiel pour les développeurs et les professionnels de l'informatique, offrant une plateforme puissante pour la conteneurisation des applications. Dans ce tutoriel, nous allons explorer comment filtrer les conteneurs Docker par nom, une compétence cruciale pour gérer efficacement votre environnement Docker. À la fin de ce guide, vous serez capable de localiser et de gérer efficacement des conteneurs spécifiques en fonction de leurs noms, ce qui vous permettra d'optimiser vos flux de travail Docker.
Visualisation des conteneurs Docker avec docker ps
Avant de pouvoir filtrer les conteneurs Docker, nous devons d'abord comprendre comment visualiser les conteneurs qui sont en cours d'exécution sur notre système. La commande la plus fondamentale à cet effet est docker ps.
Comprendre la commande docker ps
La commande docker ps liste tous les conteneurs Docker en cours d'exécution sur votre système. Lorsque vous exécutez cette commande, vous verrez des informations sur chaque conteneur, notamment :
- ID du conteneur (Container ID) : Un identifiant unique pour le conteneur
- Image : L'image Docker utilisée pour créer le conteneur
- Commande (Command) : La commande qui s'exécute à l'intérieur du conteneur
- Créé (Created) : Quand le conteneur a été créé
- Statut (Status) : Le statut actuel du conteneur
- Ports : Tous les mappages de ports
- Noms (Names) : Le nom du conteneur
Exécutons la commande docker ps pour voir tous les conteneurs en cours d'exécution :
docker ps
Vous devriez voir une sortie similaire à celle-ci :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54a76e95d987 alpine "sleep 1000" About a minute ago Up About a minute db-server
26f8c661f7a5 alpine "sleep 1000" About a minute ago Up About a minute utility-alpine
a3bb567cc561 redis "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp cache-server
f1d07c98e753 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp web-backend
d6fe891c1f04 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp web-frontend
Visualisation de tous les conteneurs
Par défaut, docker ps n'affiche que les conteneurs en cours d'exécution. Pour voir tous les conteneurs, y compris ceux qui ont été arrêtés, utilisez l'option -a :
docker ps -a
Cette commande affichera tous les conteneurs, quel que soit leur statut. Ceci est utile lorsque vous souhaitez voir les conteneurs qui ont quitté ou qui sont en pause.
Visualisation des ID de conteneur uniquement
Si vous n'avez besoin que des ID de conteneur, vous pouvez utiliser l'option -q :
docker ps -q
Ceci affiche uniquement les ID de conteneur, ce qui peut être utile lorsque vous devez les passer à d'autres commandes.
Essayez ces commandes dans votre terminal pour vous familiariser avec la fonctionnalité de base de la liste des conteneurs avant de passer au filtrage à l'étape suivante.
Filtrage de base des conteneurs par nom
Maintenant que nous comprenons comment lister les conteneurs Docker, apprenons à les filtrer par nom. Lorsque vous avez plusieurs conteneurs en cours d'exécution, en trouver un spécifique peut être difficile. Docker fournit des capacités de filtrage qui rendent cette tâche beaucoup plus facile.
Utilisation de l'option --filter
La commande docker ps prend en charge le filtrage via l'option --filter ou -f. La syntaxe de base pour filtrer par nom est :
docker ps --filter name=<container-name>
Essayons de filtrer les conteneurs qui ont "web" dans leur nom :
docker ps --filter name=web
Vous devriez voir une sortie similaire à celle-ci :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1d07c98e753 nginx "/docker-entrypoint.…" 10 minutes ago Up 10 minutes 80/tcp web-backend
d6fe891c1f04 nginx "/docker-entrypoint.…" 10 minutes ago Up 10 minutes 80/tcp web-frontend
Notez que les conteneurs web-frontend et web-backend sont affichés car ils contiennent tous les deux le mot "web" dans leur nom.
Filtrage pour des noms exacts
Pour filtrer un conteneur avec un nom exact, vous pouvez utiliser le nom complet :
docker ps --filter name=web-frontend
Cette commande n'affichera que le conteneur nommé exactement "web-frontend" :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6fe891c1f04 nginx "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 80/tcp web-frontend
Utilisation de plusieurs filtres
Vous pouvez appliquer plusieurs filtres en ajoutant plusieurs options --filter. Par exemple, pour trouver tous les conteneurs avec "web" dans leur nom ET construits à partir de l'image "nginx" :
docker ps --filter name=web --filter ancestor=nginx
Le résultat devrait être le même que notre premier filtre puisque les deux conteneurs "web" utilisent l'image nginx :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1d07c98e753 nginx "/docker-entrypoint.…" 15 minutes ago Up 15 minutes 80/tcp web-backend
d6fe891c1f04 nginx "/docker-entrypoint.…" 15 minutes ago Up 15 minutes 80/tcp web-frontend
Filtrage des conteneurs par début de nom
Si vous souhaitez filtrer les conteneurs dont les noms commencent par une chaîne spécifique, vous pouvez utiliser un motif comme celui-ci :
docker ps --filter name=^db
Cette commande affichera les conteneurs dont les noms commencent par "db" :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54a76e95d987 alpine "sleep 1000" 16 minutes ago Up 16 minutes db-server
Essayez ces commandes de filtrage dans votre terminal pour vous entraîner à trouver des conteneurs spécifiques par leurs noms.
Filtrage avancé et formatage de la sortie
Maintenant que nous maîtrisons le filtrage de base par nom, explorons des techniques plus avancées pour filtrer et formater la sortie de la commande docker ps. Ces compétences vous aideront à gérer votre environnement Docker plus efficacement.
Combinaison de plusieurs critères de filtrage
Docker vous permet de combiner plusieurs critères de filtrage pour affiner vos résultats. Par exemple, pour trouver tous les conteneurs avec "web" dans leur nom qui sont actuellement en cours d'exécution :
docker ps --filter name=web --filter status=running
Cela affichera tous les conteneurs en cours d'exécution qui ont "web" dans leur nom :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1d07c98e753 nginx "/docker-entrypoint.…" 25 minutes ago Up 25 minutes 80/tcp web-backend
d6fe891c1f04 nginx "/docker-entrypoint.…" 25 minutes ago Up 25 minutes 80/tcp web-frontend
Utilisation de l'option --format pour une sortie personnalisée
La commande docker ps prend en charge le formatage de sortie personnalisé à l'aide de l'option --format avec les modèles Go. Cela vous permet d'afficher uniquement les informations dont vous avez besoin dans le format souhaité.
Par exemple, pour afficher uniquement les noms des conteneurs et leur statut :
docker ps --format "table {{.Names}}\t{{.Status}}"
Vous verrez une sortie simplifiée comme celle-ci :
NAMES STATUS
db-server Up 26 minutes
utility-alpine Up 26 minutes
cache-server Up 26 minutes
web-backend Up 26 minutes
web-frontend Up 26 minutes
Combinaison du filtrage et du formatage
Vous pouvez combiner le filtrage et le formatage pour obtenir exactement les informations dont vous avez besoin :
docker ps --filter name=web --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"
Cela affichera un tableau avec les noms, les images et le statut des conteneurs avec "web" dans leur nom :
NAMES IMAGE STATUS
web-backend nginx Up 27 minutes
web-frontend nginx Up 27 minutes
Utilisation du filtrage de type Regex
Le système de filtrage de Docker prend en charge certains modèles de type regex. Par exemple, pour trouver les conteneurs dont les noms contiennent soit "web" OU "cache" :
docker ps --filter name=web --filter name=cache
Cela affichera à la fois les conteneurs web et les conteneurs cache :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3bb567cc561 redis "docker-entrypoint.s…" 30 minutes ago Up 30 minutes 6379/tcp cache-server
f1d07c98e753 nginx "/docker-entrypoint.…" 30 minutes ago Up 30 minutes 80/tcp web-backend
d6fe891c1f04 nginx "/docker-entrypoint.…" 30 minutes ago Up 30 minutes 80/tcp web-frontend
Exemple pratique : Script de gestion des conteneurs
Créons un script simple qui démontre comment le filtrage peut être utilisé dans un scénario pratique. Créez un nouveau fichier appelé container-stats.sh avec le contenu suivant :
nano container-stats.sh
Ajoutez le script suivant :
#!/bin/bash
## This script displays container names, images and status for a filtered set of containers
echo "Web containers:"
docker ps --filter name=web --format "{{.Names}} - {{.Image}} - {{.Status}}"
echo -e "\nCache and database containers:"
docker ps --filter name=cache --filter name=db --format "{{.Names}} - {{.Image}} - {{.Status}}"
Enregistrez le fichier (Ctrl+O, Entrée, puis Ctrl+X) et rendez-le exécutable :
chmod +x container-stats.sh
Maintenant, exécutez le script pour voir les informations sur les conteneurs filtrées et formatées :
./container-stats.sh
Vous devriez voir une sortie similaire à :
Web containers:
web-backend - nginx - Up 35 minutes
web-frontend - nginx - Up 35 minutes
Cache and database containers:
cache-server - redis - Up 35 minutes
db-server - alpine - Up 35 minutes
Ce script démontre comment le filtrage des conteneurs peut être utilisé pour organiser et présenter les informations sur votre environnement Docker de manière plus lisible et utile.
Applications pratiques du filtrage de conteneurs
Dans cette étape, nous allons explorer les applications pratiques du filtrage de conteneurs pour effectuer des tâches courantes de gestion Docker. Ces exemples démontrent comment le filtrage peut être utilisé dans des scénarios réels pour rendre la gestion des conteneurs plus efficace.
Recherche et redémarrage de conteneurs spécifiques
Disons que vous devez redémarrer tous les conteneurs liés au web. Vous pouvez utiliser le filtrage par nom pour les identifier, puis les redémarrer :
## Tout d'abord, identifiez les conteneurs web
docker ps --filter name=web
## Maintenant, redémarrez-les un par un
docker restart web-frontend
docker restart web-backend
Après avoir exécuté ces commandes, vous devriez voir la confirmation que chaque conteneur a été redémarré :
web-frontend
web-backend
Recherche et suppression de tous les conteneurs avec un motif de nom spécifique
Si vous devez supprimer tous les conteneurs avec un certain motif de nom, vous pouvez combiner le filtrage avec la suppression de conteneurs :
## AVERTISSEMENT : Ceci est uniquement à des fins de démonstration. Dans un environnement réel,
## assurez-vous de savoir ce que vous supprimez !
## Lister les conteneurs avec "utility" dans leurs noms
docker ps -a --filter name=utility
Vous devriez voir votre conteneur utilitaire :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26f8c661f7a5 alpine "sleep 1000" 45 minutes ago Up 45 minutes utility-alpine
Pour le supprimer, vous utiliseriez généralement :
## Nous n'exécuterons pas réellement cette commande pour préserver notre environnement de laboratoire
## docker rm -f $(docker ps -aq --filter name=utility)
Au lieu de cela, voyons comment cette commande fonctionne :
## Obtenez simplement les ID qui seraient affectés
docker ps -aq --filter name=utility
Cela affichera l'ID du conteneur :
26f8c661f7a5
Utilisation du filtrage pour surveiller des groupes de conteneurs spécifiques
Le filtrage de conteneurs est utile pour une surveillance ciblée. Créons un script de surveillance simple qui vérifie l'état de nos conteneurs web :
nano web-monitor.sh
Ajoutez le script suivant :
#!/bin/bash
## Ce script vérifie l'état des conteneurs web et signale si certains ne sont pas en cours d'exécution
echo "=== Vérification de l'état des conteneurs web ==="
docker ps -a --filter name=web --format "{{.Names}}: {{.Status}}"
## Compter les conteneurs web arrêtés
STOPPED=$(docker ps -a --filter name=web --filter status=exited --format "{{.Names}}" | wc -l)
if [ $STOPPED -gt 0 ]; then
echo -e "\nAVERTISSEMENT : $STOPPED conteneurs web ne sont pas en cours d'exécution !"
else
echo -e "\nTous les conteneurs web sont en cours d'exécution normalement."
fi
Enregistrez le fichier (Ctrl+O, Entrée, puis Ctrl+X) et rendez-le exécutable :
chmod +x web-monitor.sh
Maintenant, exécutez le script pour voir l'état de vos conteneurs web :
./web-monitor.sh
Vous devriez voir une sortie similaire à :
=== Vérification de l'état des conteneurs web ===
web-backend: Up 50 minutes
web-frontend: Up 50 minutes
Tous les conteneurs web sont en cours d'exécution normalement.
Filtrage dans les pipelines CI/CD
Dans les pipelines CI/CD, le filtrage des conteneurs peut être essentiel pour les tests et le déploiement automatisés. Créons un script qui simule un processus de déploiement qui cible uniquement les conteneurs avec un motif de nom spécifique :
nano deploy-update.sh
Ajoutez le script suivant :
#!/bin/bash
## Ce script simule la mise à jour de tous les conteneurs d'un type spécifique
TARGET_CONTAINERS=$1
if [ -z "$TARGET_CONTAINERS" ]; then
echo "Utilisation : $0 <motif-nom-conteneur>"
exit 1
fi
echo "Préparation de la mise à jour des conteneurs correspondant au motif : $TARGET_CONTAINERS"
echo "Conteneurs affectés :"
docker ps --filter name=$TARGET_CONTAINERS --format "{{.Names}}"
echo -e "\nDans un déploiement réel, cela ferait :"
echo "1. Extraire les dernières images"
echo "2. Arrêter chaque conteneur"
echo "3. Démarrer de nouveaux conteneurs avec les images mises à jour"
echo "4. Vérifier que les conteneurs fonctionnent correctement"
echo -e "\nSimulation terminée avec succès !"
Enregistrez le fichier (Ctrl+O, Entrée, puis Ctrl+X) et rendez-le exécutable :
chmod +x deploy-update.sh
Maintenant, simulons la mise à jour de nos conteneurs web :
./deploy-update.sh web
Vous devriez voir une sortie similaire à :
Préparation de la mise à jour des conteneurs correspondant au motif : web
Conteneurs affectés :
web-backend
web-frontend
Dans un déploiement réel, cela ferait :
1. Extraire les dernières images
2. Arrêter chaque conteneur
3. Démarrer de nouveaux conteneurs avec les images mises à jour
4. Vérifier que les conteneurs fonctionnent correctement
Simulation terminée avec succès !
Ces exemples pratiques démontrent comment le filtrage de conteneurs peut être intégré à votre flux de travail Docker pour rendre la gestion des conteneurs plus efficace et automatisée.
Résumé
Dans ce laboratoire, vous avez appris à filtrer efficacement les conteneurs Docker par nom, une compétence essentielle pour gérer les environnements Docker de toute taille. Passons en revue ce que nous avons couvert :
Liste de conteneurs de base : Vous avez appris à utiliser la commande
docker pspour afficher les conteneurs en cours d'exécution et ses différentes options comme-apour afficher tous les conteneurs.Filtrage de base par nom : Vous avez découvert comment utiliser l'option
--filter name=pour trouver des conteneurs par nom, à la fois les correspondances exactes et les correspondances partielles.Filtrage et formatage avancés : Vous avez exploré comment combiner plusieurs filtres et personnaliser la sortie à l'aide de l'option
--formatpour afficher uniquement les informations dont vous avez besoin.Applications pratiques : Vous avez créé des scripts qui démontrent des utilisations concrètes du filtrage de conteneurs pour les tâches de surveillance, de gestion et de déploiement.
Ces compétences vous aideront à gérer les environnements Docker plus efficacement, en particulier à mesure que le nombre de conteneurs augmente. Le filtrage de conteneurs est particulièrement précieux dans les environnements de développement, de test et de production où vous devez identifier et gérer rapidement des conteneurs spécifiques.
Au fur et à mesure que vous poursuivez votre parcours Docker, envisagez d'explorer d'autres options de filtrage au-delà du filtrage par nom, telles que le filtrage par volume, réseau ou étiquette (label). Ces techniques de filtrage supplémentaires peuvent encore améliorer vos capacités de gestion des conteneurs.



