我试图从本地机器推送到GAR,但我总是收到这个错误:
failed to authorize: failed to fetch anonymous token: unexpected status: 403 Forbidden
首先,我已经通过IAM确认我的帐户具有Artifact Registry Writer角色。
我在当地做了以下工作:
# Login with my Google account
gcloud auth login --update-adc --force
# Configure docker to use the gcloud CLI auth helper
gcloud auth configure-docker us-west1-docker.pkg.dev
# docker login for good measure
docker login
# Tag my image (already built)
docker tag myimage us-west1-docker.pkg.dev/myproject/myrepo/myimage
# Push it
docker push us-west1-docker.pkg.dev/myproject/myrepo/myimage
在这个最后的命令中,我得到了上面的错误。
我已经阅读了我能找到的所有谷歌文档,但它们都建议了以上步骤:
- https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling
- https://cloud.google.com/artifact-registry/docs/docker/troubleshoot
注意:使用GCP web UI直接提供的命令,我也不能拉。
我在M1 Mac上。
因此,我能够通过彻底破解Docker来解决这个问题,特别是通过以下步骤:https://stackoverflow.com/a/69437543/3846032.我无法通过正常方式卸载它,它会挂起,这意味着我遇到的问题是因为我的Docker安装非常坏。事实上,我在另一台机器上成功地完成了上述步骤,并成功了,这让我得出了上述步骤的结论,我的证书也很好。
403是转移注意力,它一定是来自我当地的Docker,它被破坏了,无法发送正确验证的请求。