Ошибка артефакта JFrog: загрузка Docker изображений с помощью схемы 1 манифеста v2 в этот репозиторий заблокирована - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть два 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

Кто-нибудь знает, что там происходит? Меняется ли версия схемы с момента первой загрузки до момента загрузки? Или это когда я отмечаю это или загружаю это во второй раз?

1 Ответ

0 голосов
/ 22 апреля 2020

root этой проблемы, вероятно, может быть классифицировано как ошибка пользователя. В частности, у пользователя, которого я использую, были удалены разрешения из репозитория релизов. Как только это было восстановлено, все работает, как и ожидалось.

Я говорю «вероятно», потому что сообщение об ошибке не имеет ничего общего с реальной проблемой, и стоило мне 2-3 часа дикой погони goose.

Итак ... Если вы видите эту ошибку, go впереди и дважды проверьте все остальное вокруг прав доступа / доступа, прежде чем пытаться выяснить, действительно ли что-то не так с вашей версией схемы изображения.

...