无法将 Docker 映像推送到 GCP 容器注册表

无法将 Docker 映像推送到 GCP 容器注册表

我正在尝试将 Docker 映像推送到 Google 云平台上的容器注册表中。我能够在本地计算机上成功构建映像。我尝试了以下命令:

sudo docker push eu.gcr.io/$PROJECT_ID/$CONTAINER_NAME

我收到权限被拒绝错误:

未经授权:您没有执行此操作所需的权限,并且您的凭据可能无效。要验证您的请求,请按照以下步骤操作:https://cloud.google.com/container-registry/docs/advanced-authentication

我尝试按照提供的链接中的步骤进行操作,特别是gcloud 凭证助手说明。我还尝试了gcloud auth configure-dockergcloud auth login,但都无济于事。关于 IAM 权限,我的个人电子邮件被列为所有者和存储管理员角色。我还手动设置了具有所有者和存储管理员角色的服务帐户。我的$GOOGLE_APPLICATION_CREDENTIALS环境变量指向从这个手动创建的服务帐户中提取的 json 文件。gcloud auth configure-docker提供以下输出:

WARNING: Your config file at [/home/awa5114/.docker/config.json] contains these credential helper entries:

{
  "credHelpers": {
    "gcr.io": "gcloud",
    "us.gcr.io": "gcloud",
    "eu.gcr.io": "gcloud",
    "asia.gcr.io": "gcloud",
    "staging-k8s.gcr.io": "gcloud",
    "marketplace.gcr.io": "gcloud"
  }
}
Adding credentials for all GCR repositories.
WARNING: A long list of credential helpers may cause delays running 'docker build'. We recommend passing the registry name to configure only the registry you are using.
gcloud credential helpers already registered correctly.

到目前为止,我真的不明白为什么我被拒绝将此图像推送到容器注册表。任何帮助都非常感谢。非常感谢。

答案1

您的帐户可能没有在 GCR 中存储/写入 Docker 映像的权限。GCP 中的 GCR 由 Google 云存储桶支持,您的帐户需要对该存储桶具有写入权限。

对于 eu.gcr.io,等效存储桶是gs://eu.artifacts.$PROJECT_ID.appspot.com。尝试roles/storage.objectAdmin在存储桶级别授予您的帐户一个角色。当然,您也可以在项目或组织级别执行此操作。

您可以找到详细信息 -https://cloud.google.com/container-registry/docs/access-control#permissions

相关内容