Сравнение трассировок двух записей сборки
На этом шаге вы узнаете, как генерировать и сравнивать OpenTelemetry трассировки двух разных записей сборки Docker. Сравнение трассировок помогает выявлять различия в производительности между сборками, особенно после внесения изменений в Dockerfile
или окружение сборки.
Сначала убедитесь, что находитесь в директории ~/project
.
cd ~/project
У нас уже есть файл trace.json
из предыдущей сборки. Переименуем его в trace1.json
для сохранения.
mv trace.json trace1.json
Теперь внесём небольшое изменение в наш Dockerfile
и соберём образ снова, создав вторую трассировку. Добавим простую инструкцию LABEL
в Dockerfile
.
Откройте Dockerfile
для редактирования:
nano Dockerfile
Добавьте следующую строку после инструкции CMD
:
LABEL version="1.0"
Обновлённый Dockerfile
должен выглядеть так:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y --no-install-recommends fortune-mod
CMD ["/usr/games/fortune"]
LABEL version="1.0"
Сохраните файл и выйдите из nano
.
Теперь соберём образ снова, создав новый файл трассировки trace2.json
.
BUILDKIT_TRACE=trace2.json docker build --progress=plain -t my-fortune-image .
После завершения сборки у вас будет два файла трассировки: trace1.json
и trace2.json
.
Хотя прямое сравнение сырых JSON-файлов может быть сложным, эти файлы предназначены для обработки системами визуализации OpenTelemetry. В реальных условиях вы бы импортировали оба файла в инструмент визуализации трассировок (например Jaeger). Это позволило бы наглядно сравнить временные линии и промежутки (spans) двух сборок, выявляя различия во времени выполнения и определяя, какие шаги были затронуты изменениями.
Например, при просмотре этих трассировок в Jaeger вы увидите отдельные шаги сборки Docker (FROM
, RUN
, CMD
, LABEL
) как spans. Затем можно сравнить длительность этих spans между двумя трассировками, чтобы определить, повлияло ли добавление инструкции LABEL
на время сборки.
Поскольку в этой лабораторной работе у нас нет настроенной системы визуализации, мы просто убедимся в наличии обоих файлов трассировки.