Comparer les traces de deux enregistrements de build
Dans cette étape, vous apprendrez comment générer et comparer les traces OpenTelemetry de deux enregistrements de build Docker différents. La comparaison des traces peut être utile pour identifier les différences de performance entre les builds, notamment après avoir apporté des modifications à votre Dockerfile
ou à l'environnement de build.
Tout d'abord, assurez-vous d'être dans le répertoire ~/project
.
cd ~/project
Nous disposons déjà d'un fichier trace.json
provenant du build précédent. Renommons-le en trace1.json
pour le conserver.
mv trace.json trace1.json
Maintenant, apportons une petite modification à notre Dockerfile
et reconstruisons l'image, en générant un second fichier de trace. Nous allons ajouter une simple instruction LABEL
au Dockerfile
.
Ouvrez le Dockerfile
pour le modifier.
nano Dockerfile
Ajoutez la ligne suivante après l'instruction CMD
:
LABEL version="1.0"
Le Dockerfile
mis à jour devrait ressembler à ceci :
FROM ubuntu:latest
RUN apt-get update && apt-get install -y --no-install-recommends fortune-mod
CMD ["/usr/games/fortune"]
LABEL version="1.0"
Enregistrez le fichier et quittez nano
.
Maintenant, reconstruisez l'image en générant un nouveau fichier de trace nommé trace2.json
.
BUILDKIT_TRACE=trace2.json docker build --progress=plain -t my-fortune-image .
Une fois le build terminé, vous disposerez de deux fichiers de trace : trace1.json
et trace2.json
.
Bien que la comparaison directe des fichiers JSON bruts puisse être complexe, ces fichiers sont conçus pour être utilisés par des backends de tracing OpenTelemetry. Dans un scénario réel, vous importeriez les deux fichiers trace1.json
et trace2.json
dans un outil de visualisation de traces (comme Jaeger). Cet outil vous permettrait de comparer visuellement les chronologies et les spans des deux builds, facilitant l'identification des différences de temps d'exécution et des étapes affectées par vos modifications.
Par exemple, si vous visualisiez ces traces dans Jaeger, vous verriez les étapes individuelles du build Docker (comme FROM
, RUN
, CMD
, LABEL
) sous forme de spans. Vous pourriez alors comparer la durée de ces spans entre les deux traces pour voir si l'ajout de l'instruction LABEL
a eu un impact mesurable sur le temps de build.
Comme nous n'avons pas configuré de backend de tracing dans ce lab, nous nous contenterons de vérifier que les deux fichiers de trace existent.