In diesem Schritt lernen wir, wie Docker-Ereignisse im JSON-Format mit dem --json
-Flag des docker events
-Befehls ausgegeben werden können. Die Ausgabe von Ereignissen im JSON-Format ist nützlich für die programmatische Verarbeitung und Integration mit anderen Tools.
Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project/my-compose-app
befinden.
cd ~/project/my-compose-app
Nun führen wir den docker events
-Befehl mit dem --json
-Flag aus. Dadurch werden die Ereignisse im JSON-Format gestreamt.
docker events --json
Sie sehen einen kontinuierlichen Strom von JSON-Objekten, wobei jedes Objekt ein Docker-Ereignis repräsentiert. Die Ausgabe sieht ähnlich wie folgt aus (Details variieren):
{"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}
...
Jede Zeile ist ein gültiges JSON-Objekt mit detaillierten Informationen über das Ereignis, wie den Ereignis-status
, die id
des betroffenen Objekts, Type
, Action
und Actor
-Details einschließlich Attributes
wie Image-Name und Container-Name.
Um das Erfassen dieser Ereignisse zu demonstrieren, stoppen und starten wir den web
-Service erneut, während der docker events --json
-Befehl in einem anderen Terminal oder im Hintergrund läuft. Da wir in diesem Lab ein einzelnes Terminal verwenden, stoppen wir zunächst den docker events --json
-Befehl mit Strg + C
.
Nun stoppen wir den web
-Service.
docker-compose stop web
Sie sollten eine Ausgabe sehen, die anzeigt, dass der web
-Container gestoppt wird.
[+] Stopping 1/1
⠿ Container my-compose-app-web-1 Stopped
Nun führen wir docker events --json
im Hintergrund aus und starten den Service erneut. Wir verwenden das &
-Symbol, um den Befehl im Hintergrund auszuführen.
docker events --json &
Sie sehen eine Prozess-ID (PID), die anzeigt, dass der Befehl im Hintergrund läuft.
Nun starten wir den web
-Service erneut.
docker-compose start web
Sie sollten eine Ausgabe sehen, die anzeigt, dass der web
-Container gestartet wird.
[+] Starting 1/1
⠿ Container my-compose-app-web-1 Started
Der im Hintergrund laufende docker events --json
-Befehl erfasst die stop
- und start
-Ereignisse. Um die Ausgabe des Hintergrundprozesses zu sehen, müssen Sie ihn möglicherweise mit dem fg
-Befehl in den Vordergrund holen oder die Terminalausgabe nach dem Stoppen des Hintergrundprozesses überprüfen. Für diesen Schritt reicht es jedoch aus, den Befehl mit --json
auszuführen, um das Format zu verstehen.
Um den Hintergrundprozess docker events --json
zu stoppen, können Sie den jobs
-Befehl verwenden, um Hintergrundjobs aufzulisten, und dann kill %<job_number>
. Alternativ können Sie die Prozess-ID mit ps aux | grep 'docker events --json'
finden und den kill
-Befehl mit der PID verwenden. Einfacher ist es in diesem Kontext, einfach mit dem nächsten Schritt fortzufahren, da der Hintergrundprozess nicht wesentlich stört.
In diesem Schritt haben wir erfolgreich das --json
-Flag verwendet, um Docker-Ereignisse in einem strukturierten JSON-Format anzuzeigen, was für Automatisierung und Analyse wertvoll ist.