Почему SHA256-дайджест изображения Docker изменяется, если мы помещаем одно и то же изображение с одним и тем же тегом несколько раз в один и тот же репозиторий docker

#docker #dockerfile #artifactory

#docker #dockerfile #артефактор

Вопрос:

Я создал изображение docker с пользовательским тегом, используя Dockerfile. Впервые, когда я поместил его в репозиторий docker (в Jfrog artifactory), используя команду docker push, оно сгенерировало значение дайджеста SHA256. Теперь я снова поместил одно и то же изображение с тем же тегом без каких-либо изменений в содержимом изображения в тот же репозиторий docker. Но теперь оно сгенерировало новое значение дайджеста SHA256.

Кто-нибудь может объяснить мне, почему это происходит? На данный момент я поражен, поскольку мой проект вряд ли зависит от значения SHA256-дайджеста изображения docker.

Комментарии:

1. @user1529891 — Большое спасибо. Это ответило на мой вопрос

2. У меня последняя версия aws (2021), если я помещаю один и тот же исходный код с новым тегом, дайджест остается тем же. Я бы хотел новый дайджест, как и ваш вопрос

Ответ №1:

Поскольку мой комментарий ответил на ваш вопрос, оригинальная ссылка относится к сообщению здесь:https://windsock.io/explaining-docker-image-ids /

Слои идентифицируются дайджестом в этой форме: algorithm:hex который выглядит как sha256:abcd.... .

hex Вычисляется путем применения алгоритма ( sha256 ) к содержимому слоев. Если содержимое меняется, то меняется и дайджест.

Комментарии:

1. Можете ли вы предоставить дополнительную информацию, связанную с тем, как создается manifest.json и из какой информации он состоит? Из-за изменения в manifest.json общее значение SHA изображения меняется, даже если содержимое слоев не меняется

2. Этот ответ очень запутанный. Содержимое не меняется, не так ли? Я имею в виду, что мы просто что-то помечаем, мы не меняем то, что помечается. Итак, если теги изображения каким-то образом не являются частью этого изображения, то на самом деле это вообще не объяснение.

3. @Kris Изменение текста в файлах означает, что содержимое не изменилось. Когда вы создаете изображение, существует множество слоев (например, обновления SO, изменения родительского изображения и т.д.), Поэтому, по крайней мере, у вас есть все слои, кэшированные содержимое будет часто меняться, даже если ваш код тот же.