当artifact存储库成功创建时,运行docker push将图像推送到google artifact注册表失败,并出现权限错误,即使我在gcloud cli上使用的帐户授予了所有artifact权限。
用于推送映像的命令:
docker push us-central1-docker.pkg.dev/project-id/repo-name:v2
错误消息:
The push refers to repository [us-central1-docker.pkg.dev/project-id/repo-name]
6f6f4a472f31: Preparing
bc096d7549c4: Preparing
5f70bf18a086: Preparing
20bed28d4def: Preparing
2a3255c6d9fb: Preparing
3f5d38b4936d: Waiting
7be8268e2fb0: Waiting
b889a93a79dd: Waiting
9d4550089a93: Waiting
a7934564e6b9: Waiting
1b7cceb6a07c: Waiting
b274e8788e0c: Waiting
78658088978a: Waiting
denied: Permission "artifactregistry.repositories.downloadArtifacts" denied on resource "projects/project-id/locations/us-central1/repositories/repo-name" (or it may not exist)
3条答案
按热度按时间r7s23pms1#
我能够重新创建您的用例。当您尝试在
repository
上推送映像时,会发生这种情况,其中映像的特定主机名(与其存储库位置相关联)尚未添加到凭据帮助器配置以进行身份验证。您可以在注解中参考@DazWilkin提供的Setting up authentication for Docker以了解更多细节。在我的示例中,我尝试将一个映像推送到位置为
us-east1
的存储库中,但由于它尚未添加到凭据助手配置中,因此得到了相同的错误。x1c 0d1x在我使用以下命令运行身份验证之后(特别针对us-east 1,因为它是我的存储库的
location
),映像被成功推送:快速提示:当您在console中打开所需的存储库,然后单击
SETUP INSTRUCTIONS
.时,您可能会获得特定于存储库的身份验证命令
ajsxfq5m2#
对我来说,这是一个关于ubuntu配置文件位置的问题。下面的链接帮助我解决了这个问题
https://jhartman.pl/2022/03/23/how-to-fix-permission-artifactregistry-repositories-downloadartifacts-denied-on-resource-on-ubuntu-when-pulling-from-google-artifact-repository/
fnatzsnv3#
另一个问题可能是当前在gcloud配置中设置的gcp项目不是包含您试图将映像推送到的repo的项目。例如,试图推送到europe-west1-docker.pkg.dev/project123/<repo_name>www.example.com/<app_name>,但gcloud配置中设置了project 456。要检查gcloud配置中设置的项目,请运行以下命令。
为了将项目更新为具有该存储库的项目,请运行以下命令。