En este paso, aprenderemos cómo mostrar eventos de Docker en formato JSON usando el flag --json
con el comando docker events
. Mostrar eventos en formato JSON es útil para procesamiento programático e integración con otras herramientas.
Primero, asegúrate de estar en el directorio ~/project/my-compose-app
.
cd ~/project/my-compose-app
Ahora, ejecutemos el comando docker events
con el flag --json
. Esto mostrará los eventos en formato JSON.
docker events --json
Verás un flujo continuo de objetos JSON, donde cada objeto representa un evento de Docker. La salida será similar a esta (los detalles variarán):
{"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}
...
Cada línea es un objeto JSON válido que contiene información detallada sobre el evento, como el status
del evento, el id
del objeto afectado, Type
, Action
, y detalles del Actor
incluyendo Attributes
como el nombre de la imagen y el nombre del contenedor.
Para demostrar cómo capturar estos eventos, detengamos y luego iniciemos nuevamente el servicio web
mientras el comando docker events --json
se ejecuta en otra terminal o en segundo plano. Como estamos usando una sola terminal en este laboratorio, primero detendremos el comando docker events --json
presionando Ctrl + C
.
Ahora, detengamos el servicio web
.
docker-compose stop web
Deberías ver una salida que indica que el contenedor web
se está deteniendo.
[+] Stopping 1/1
⠿ Container my-compose-app-web-1 Stopped
Ahora, ejecutemos docker events --json
en segundo plano y luego iniciemos el servicio nuevamente. Usaremos el símbolo &
para ejecutar el comando en segundo plano.
docker events --json &
Verás un ID de proceso (PID) impreso, indicando que el comando se está ejecutando en segundo plano.
Ahora, inicia el servicio web
nuevamente.
docker-compose start web
Deberías ver una salida que indica que el contenedor web
se está iniciando.
[+] Starting 1/1
⠿ Container my-compose-app-web-1 Started
El comando docker events --json
ejecutándose en segundo plano capturará los eventos stop
y start
. Para ver la salida del proceso en segundo plano, podrías necesitar traerlo al primer plano usando el comando fg
, o revisar la salida de la terminal después de que el proceso en segundo plano se detenga. Sin embargo, para el propósito de este paso, simplemente ejecutar el comando con --json
es suficiente para entender el formato.
Para detener el proceso en segundo plano docker events --json
, puedes usar el comando jobs
para listar trabajos en segundo plano y luego kill %<job_number>
. Alternativamente, puedes encontrar el ID del proceso usando ps aux | grep 'docker events --json'
y usar el comando kill
con el PID. Una forma más simple en este contexto es simplemente continuar al siguiente paso, ya que el proceso en segundo plano no interferirá significativamente.
En este paso, usamos exitosamente el flag --json
para ver eventos de Docker en un formato JSON estructurado, lo cual es valioso para automatización y análisis.