拒绝:将映像推送到 GitHubLab 注册表时,请求访问资源时被拒绝



我正在尝试将图像推送到 gitlab 注册表。

我已经做了很多次了,所以我想知道为什么我会收到这个错误。

我使用最新标签构建映像:

Successfully tagged registry.gitlab.com/mycompany/rgpd_api:latest

然后我登录并推送:

docker login registry.gitlab.com -u gitlab+deploy-token-91931 
docker push registry.gitlab.com/mycompany/rgpd_api:latest

但我得到:

The push refers to repository [registry.gitlab.com/mycompany/rgpd_api]
be679cc302b9: Preparing 
denied: requested access to the resource is denied

我给了gitlab+deploy-token-91931令牌read_repositoryread_registry权利。

我的回购是:

https://gitlab.com/mycompany/rgpd_api

我检查了文档页面:https://docs.gitlab.com/ee/user/project/container_registry.html

但是当我通过 Gitlab CI 做到这一点时,gitlab-ci-token

我可以正常推。

我也尝试重新生成一个新令牌,但仍然是相同的问题。

我该如何解决?

我也偶然发现了这个问题,事实证明

组级别
  • 部署令牌可用于将映像推送到组级别容器注册表,类似于具有 API 访问权限或其他适用范围的 PAT 令牌。
  • 必须使用与组中现有项目匹配的标记来标记图像。
  • 任何以不同方式标记的图像都将被拒绝,并显示denied: requested access to the resource is denied错误消息。

因此,通过以下设置:

  • 名为mytest的GitLab小组
  • 该组中名为hello-world的项目
  • 标记为registry.gitlab.com/mytest/hello-world的 Docker 映像
  • 部署为整个组创建的令牌
  • Docker 守护程序授权通过cat "<deploy_token>" | docker login -u "<token_username>" --password-stdin registry.gitlab.com推送到该注册表

您将获得以下结果:

  • 成功推动docker push registry.gitlab.com/mytest/hello-world,因为此类项目存在于集团内
  • denied: requested access to the resource is denied,如果您尝试推送带有项目中不存在的项目名称标记的图像,例如docker push registry.gitlab.com/mytest/no-project

因此,同样,必须标记图像以匹配组中的现有路径,例如组或子组中的现有项目。

我的错误是使用部署令牌将映像推送到注册表。

部署令牌可用于拉取映像,但不能推送映像。

因此,您可以改为生成个人访问令牌。您应该至少添加权限:

read_registry, write_registry

确保在设置中具有正确的配置。

转到项目的设置,然后转到"可见性,项目功能,权限"并选中"容器注册表:每个项目都可以有自己的空间来存储其Docker映像"(仅适用于成员或所有人,由您决定)。否则,推送和拉取将被拒绝。

这发生在我身上,这就是我解决它的方式。

您可以进行docker logout your registry并再次登录。 它会重新创建您的令牌。 这在我的情况下有效。

相关内容

最新更新