У меня есть два docker репозитория, работающих на одной учетной записи / экземпляре облака JFrog. Один для внутренних релиз-кандидатов, а другой для потенциально внешних релизов G C. Я хочу иметь возможность создавать docker образы и pu sh во внутреннем хранилище, разрешить QA / UAT go в город, а затем скопировать изображение в хранилище релизов. Я не хочу восстановить изображение из источника. К сожалению, когда я пытаюсь вытащить, пометить, а затем pu sh изображение, я получаю сообщение об ошибке:
не авторизован: отправка Docker изображений с манифестом v2 схема 1 в этот репозиторий заблокирован.
Обе схемы репозиториев блокируют схему 1, но я толкаю штрафа к внутреннему репозиторию, так что нет особого смысла, я не смог бы попытаться sh то же самое изображение в репозиторий релизов.
Я установил довольно простой тест для подтверждения (фактические URL репозитория подвергли цензуре):
% docker pull hello-world:latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
...
% docker tag hello-world:latest internal-rc.jfrog.io/hello-world:1.0.0-beta
% docker push internal-rc.jfrog.io/hello-world:1.0.0-beta
The push refers to repository [internal-rc.jfrog.io/hello-world]
9c27e219663c: Pushed
...
% docker system prune -a
...
Total reclaimed space: 131.8MB
% docker image pull internal-rc.jfrog.io/hello-world:1.0.0-beta
1.0.0-beta: Pulling from hello-world
0e03bdcc26d7: Pull complete
...
% docker image tag internal-rc.jfrog.io/hello-world:1.0.0-beta docker-release.jfrog.io/hello-world:1.0.0
% docker image push docker-release.jfrog.io/hello-world:1.0.0
The push refers to repository [docker-release.jfrog.io/hello-world]
9c27e219663c: Layer already exists
[DEPRECATION NOTICE] registry v2 schema1 support will be removed in an upcoming release. Please contact admins of the docker-release.jfrog.io registry NOW to avoid future disruption. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
unauthorized: Pushing Docker images with manifest v2 schema 1 to this repository is blocked. For more information visit https://www.jfrog.com/confluence/display/RTF/Advanced+Topics#AdvancedTopics-DockerManifestV2Schema1Deprecation
Так что я могу нормально загрузить изображение в первый репозиторий и подтвердите, что он использует схему 2:
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 7004,
"digest": "sha256:66f750f4871ba45724699d7341ee7135caba46f63fb205351197464a66b55eff"
...
Имеет ли значение mediaType
v1? Кажется, сам манифест версии 2 ... Но я не знаю, как бы я это изменил, или почему это было бы разрешено в одном хранилище, но не в другом.
Я использую, я полагаю последняя версия docker Docker version 19.03.8, build afacb8b
Кто-нибудь знает, что там происходит? Меняется ли версия схемы с момента первой загрузки до момента загрузки? Или это когда я отмечаю это или загружаю это во второй раз?