Я пытаюсь создать образы Docker, и я хотел бы, чтобы мои образы Docker были детерминированными.К моему большому удивлению, я обнаружил, что даже тривиальный Dockerfile, такой как
FROM scratch
ENV a b
, выдает разные идентификаторы при многократной сборке с использованием docker build --no-cache .
Как я могу сделать свои сборки детерминированными и что вызывает измененияв идентификаторах изображений?Когда кэширование включено, создается тот же идентификатор.
Причина, по которой я пытаюсь получить эту воспроизводимость, заключается в том, чтобы включить создание одинаковых слоев в среде распределенной сборки.Я не могу контролировать, где выполняется сборка, поэтому я не могу знать, что находится в кеше.Кроме того, сборка Docker загружает файлы с помощью wget с ftp, которые могли или не могли измениться, в настоящее время я не могу легко сказать Docker из Dockerfile, если результаты RUN
должны сделать кэш недействительным.Поэтому, если бы я мог просто создать один и тот же идентификатор для идентичных слоев (когда кеш не используется), эти слои не нужно было бы «подталкивать» и «вытягивать» снова.
Также все причины, перечисленные здесь:https://reproducible -builds.org /