Traces zweier Build-Datensätze vergleichen
In diesem Schritt lernen Sie, wie Sie OpenTelemetry-Traces von zwei verschiedenen Docker-Build-Datensätzen generieren und vergleichen können. Der Vergleich von Traces ist nützlich, um Leistungsunterschiede zwischen Builds zu identifizieren, insbesondere nach Änderungen an Ihrer Dockerfile
oder der Build-Umgebung.
Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project
befinden.
cd ~/project
Wir haben bereits eine trace.json
-Datei vom vorherigen Build. Benennen wir sie in trace1.json
um, um sie zu behalten.
mv trace.json trace1.json
Nun nehmen wir eine kleine Änderung an unserer Dockerfile
vor und erstellen das Image erneut, wobei wir eine zweite Trace-Datei generieren. Wir fügen der Dockerfile
eine einfache LABEL
-Anweisung hinzu.
Öffnen Sie die Dockerfile
zur Bearbeitung.
nano Dockerfile
Fügen Sie folgende Zeile nach der CMD
-Anweisung ein:
LABEL version="1.0"
Die aktualisierte Dockerfile
sollte nun so aussehen:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y --no-install-recommends fortune-mod
CMD ["/usr/games/fortune"]
LABEL version="1.0"
Speichern Sie die Datei und beenden Sie nano
.
Erstellen Sie nun das Image erneut und generieren Sie eine neue Trace-Datei namens trace2.json
.
BUILDKIT_TRACE=trace2.json docker build --progress=plain -t my-fortune-image .
Nach Abschluss des Builds haben Sie zwei Trace-Dateien: trace1.json
und trace2.json
.
Während der direkte Vergleich der rohen JSON-Dateien schwierig sein kann, sind diese Dateien für die Verwendung mit OpenTelemetry-Tracing-Backends konzipiert. In einem realen Szenario würden Sie beide Dateien (trace1.json
und trace2.json
) in ein Tracing-Visualisierungstool (wie Jaeger) importieren. Dieses Tool würde es ermöglichen, die Zeitabläufe und Spans der beiden Builds visuell zu vergleichen, um Unterschiede in der Ausführungszeit zu erkennen und festzustellen, welche Schritte von Ihren Änderungen betroffen waren.
Wenn Sie diese Traces beispielsweise in Jaeger betrachten würden, sähen Sie die einzelnen Schritte des Docker-Builds (wie FROM
, RUN
, CMD
, LABEL
) als Spans. Sie könnten dann die Dauer dieser Spans zwischen den beiden Traces vergleichen, um festzustellen, ob das Hinzufügen der LABEL
-Anweisung messbare Auswirkungen auf die Build-Zeit hatte.
Da wir in diesem Lab kein Tracing-Backend eingerichtet haben, werden wir lediglich überprüfen, dass beide Trace-Dateien existieren.