pushing an image with two tags to gcr.io results in two different images

I'm doing the following:

docker build -t gcr.io/projid/imgname:333 -t gcr.io/projid/imgname:latest .

docker login -u _json_key -p "$(cat /secrets/service-account.json)" https://gcr.io

docker push gcr.io/projid/imgname:333

docker push gcr.io/projid/imgname:latest

Output of 1st push command:

Pushing to google container registry ...
The push refers to a repository [gcr.io/projid/imgname]
24af4f7c7118: Preparing
17b0972980d8: Preparing
6d6a6425aacb: Preparing
809c8c0dd73c: Preparing
e8d45b8ab3ca: Preparing
e8fa134cb7b8: Preparing
7cbcbac42c44: Preparing
e8fa134cb7b8: Waiting
7cbcbac42c44: Waiting
809c8c0dd73c: Layer already exists
e8d45b8ab3ca: Layer already exists
7cbcbac42c44: Layer already exists
e8fa134cb7b8: Layer already exists
17b0972980d8: Pushed
24af4f7c7118: Pushed
6d6a6425aacb: Pushed
333: digest: sha256:dae8cf914ba49928e6f0a34f6740802403813e6d10aa1c1d448a62ce9bb69066 size: 1779

Output of 2nd push command:

Pushing to google container registry ...
The push refers to a repository [gcr.io/projid/imgname]
24af4f7c7118: Preparing
17b0972980d8: Preparing
6d6a6425aacb: Preparing
809c8c0dd73c: Preparing
e8d45b8ab3ca: Preparing
e8fa134cb7b8: Preparing
7cbcbac42c44: Preparing
e8fa134cb7b8: Waiting
7cbcbac42c44: Waiting
e8d45b8ab3ca: Layer already exists
809c8c0dd73c: Layer already exists
24af4f7c7118: Layer already exists
17b0972980d8: Layer already exists
6d6a6425aacb: Layer already exists
7cbcbac42c44: Layer already exists
e8fa134cb7b8: Layer already exists
latest: digest: sha256:4f57375919829982741d095f8917306fe0c1410e115d030179bae4b8e4299c30 size: 1742

Question: Why the same image with two tags results in two different images in google container registry?

3
задан 24 January 2017 в 09:45
4 ответа

Говоря о двух разных изображениях, вы имеете в виду два разных значения дайджеста?

SHA означает алгоритм безопасного хеширования и представляет собой семейство криптографических хеш-функций, а алгоритм SHA-256 генерирует почти уникальный 256-битный (32-байтовый) хэш фиксированного размера. Поскольку тег изображения также используется для вычисления дайджеста, значение дайджеста будет значительно изменено, даже если изменится только один бит тега. В криптографии это называется лавинным эффектом, и вы можете прочитать об этом здесь .

enter image description here

1
ответ дан 3 December 2019 в 06:57

Դուք, անշուշտ, հրում եք պատկերի երկու պիտակ: Ես առաջարկում եմ կառուցել մեկ պիտակով, այնուհետև ավելացնել երկրորդը և մեկ առ մեկ հրել պատկերի պիտակները: Եթե ​​երկրորդը նոր մարսողություն է ավելացնում, դա GCR սխալ է: Ես բախվել եմ այս վրիպակի հետ և լուծել `ջնջելով պահոցը, այնպես որ այն նորից կստեղծվի հաջորդ հրահրման ժամանակ: Իմ կազմաձևում Docker տարբերակը նույնպես գործոն էր: 17.04.0-ce տարբերակ, կառուցել 4845c56- ը կխթանի լրացուցիչ մարսողությունը, մինչդեռ 17.03.1-ce, build c6d412e տարբերակը լավ կաշխատի:

1
ответ дан 3 December 2019 в 06:57

Что нужно проверить, так это сравнить манифесты двух изображений.Например:

docker manifest inspect <image>

или

skopeo inspect --raw docker://image

Если вы различаете выходные данные JSON этих команд между двумя изображениями, которые должны быть одинаковыми, но не являются одинаковыми, это может дать вам некоторое представление об основной проблеме.

Например, в моем случае оказалось, что это была ошибка в моем инструменте сборки изображений (buildah, через podman), в котором два слоя изображения имели неправильный тип носителя application/vnd.docker.image.rootfs.diff.tar.gzip, хотя на самом деле правильным типом носителя был application/vnd.docker.image.rootfs.diff.tar.

Кроме того, podman исправлял (полезно?) тип носителя, когда отправлял одно и то же изображение с другим тегом, так что в реестре контейнеров фактически оказывались теги на двух разных «образах».

1
ответ дан 7 August 2020 в 14:39

ОБНОВЛЕНИЕ: май 2021 г.

Я не получаю сообщения об этой проблеме, поэтому считаю, что она исправлена:

Already have image (with digest): gcr.io/cloud-builders/docker
The push refers to repository [gcr.io/proj-dev/client]
1b046f5a4242: Preparing
45ad1ef5106f: Preparing
02c95cff5c48: Preparing
4d5085b7c406: Preparing
516e4ad96ca6: Preparing
94ed6f39e7b4: Preparing
e73bffd94869: Preparing
ebf12965380b: Preparing
94ed6f39e7b4: Waiting
e73bffd94869: Waiting
ebf12965380b: Waiting
516e4ad96ca6: Pushed
4d5085b7c406: Pushed
e73bffd94869: Layer already exists
ebf12965380b: Layer already exists
1b046f5a4242: Pushed
45ad1ef5106f: Pushed
94ed6f39e7b4: Pushed
02c95cff5c48: Pushed
latest: digest: sha256:f824ee7aecb79e1826a311d4dd0d85919a636abc7defc165ec36e8ceb330829c size: 1999
The push refers to repository [gcr.io/proj-dev/client]
1b046f5a4242: Preparing
45ad1ef5106f: Preparing
02c95cff5c48: Preparing
4d5085b7c406: Preparing
516e4ad96ca6: Preparing
94ed6f39e7b4: Preparing
e73bffd94869: Preparing
ebf12965380b: Preparing
94ed6f39e7b4: Waiting
e73bffd94869: Waiting
ebf12965380b: Waiting
1b046f5a4242: Layer already exists
02c95cff5c48: Layer already exists
4d5085b7c406: Layer already exists
45ad1ef5106f: Layer already exists
516e4ad96ca6: Layer already exists
e73bffd94869: Layer already exists
ebf12965380b: Layer already exists
94ed6f39e7b4: Layer already exists
3.0.0-master-7e0d787: digest: sha256:f824ee7aecb79e1826a311d4dd0d85919a636abc7defc165ec36e8ceb330829c size: 1999
2
ответ дан 18 May 2021 в 18:27

Теги

Похожие вопросы