Dans cette étape, nous allons apprendre à afficher les événements Docker au format JSON en utilisant le flag --json
avec la commande docker events
. L'affichage des événements au format JSON est utile pour le traitement programmatique et l'intégration avec d'autres outils.
Tout d'abord, assurez-vous de vous trouver dans le répertoire ~/project/my-compose-app
.
cd ~/project/my-compose-app
Maintenant, exécutons la commande docker events
avec le flag --json
. Cela diffusera les événements au format JSON.
docker events --json
Vous verrez un flux continu d'objets JSON, où chaque objet représente un événement Docker. La sortie ressemblera à ceci (les détails varieront):
{"status":"create","id":"1234567890abcdef...","from":"nginx:latest","Type":"container","Action":"create","Actor":{"ID":"1234567890abcdef...","Attributes":{"image":"nginx:latest","name":"my-compose-app-web-1"}},"scope":"local","time":1678886400,"timeNano":1678886400123456789}
{"status":"start","id":"1234567890abcdef...","from":"nginx:latest","Type":"container","Action":"start","Actor":{"ID":"1234567890abcdef...","Attributes":{"image":"nginx:latest","name":"my-compose-app-web-1"}},"scope":"local","time":1678886401,"timeNano":1678886401987654321}
...
Chaque ligne est un objet JSON valide contenant des informations détaillées sur l'événement, telles que le status
de l'événement, l'id
de l'objet concerné, le Type
, l'Action
, et les détails de l'Actor
incluant les Attributes
comme le nom de l'image et le nom du conteneur.
Pour démontrer la capture de ces événements, arrêtons puis redémarrons le service web
pendant que la commande docker events --json
s'exécute dans un autre terminal ou en arrière-plan. Comme nous utilisons un seul terminal dans ce lab, nous allons d'abord arrêter la commande docker events --json
en appuyant sur Ctrl + C
.
Maintenant, arrêtons le service web
.
docker-compose stop web
Vous devriez voir une sortie indiquant que le conteneur web
est en cours d'arrêt.
[+] Stopping 1/1
⠿ Container my-compose-app-web-1 Stopped
Exécutons maintenant docker events --json
en arrière-plan puis redémarrons le service. Nous utiliserons le symbole &
pour exécuter la commande en arrière-plan.
docker events --json &
Vous verrez un identifiant de processus (PID) s'afficher, indiquant que la commande s'exécute en arrière-plan.
Maintenant, redémarrons le service web
.
docker-compose start web
Vous devriez voir une sortie indiquant que le conteneur web
est en cours de démarrage.
[+] Starting 1/1
⠿ Container my-compose-app-web-1 Started
La commande docker events --json
exécutée en arrière-plan capturera les événements stop
et start
. Pour voir la sortie du processus en arrière-plan, vous pourriez avoir besoin de le ramener au premier plan avec la commande fg
, ou vérifier la sortie du terminal après l'arrêt du processus en arrière-plan. Cependant, pour les besoins de cette étape, simplement exécuter la commande avec --json
suffit à comprendre le format.
Pour arrêter le processus docker events --json
en arrière-plan, vous pouvez utiliser la commande jobs
pour lister les tâches en arrière-plan puis kill %<job_number>
. Alternativement, vous pouvez trouver l'identifiant du processus avec ps aux | grep 'docker events --json'
et utiliser la commande kill
avec le PID. Une méthode plus simple dans ce contexte est simplement de passer à l'étape suivante, car le processus en arrière-plan n'interférera pas significativement.
Dans cette étape, nous avons utilisé avec succès le flag --json
pour visualiser les événements Docker dans un format JSON structuré, ce qui est précieux pour l'automatisation et l'analyse.