无法推送到 Google 容器注册表(访问被拒绝)

2024-04-18

当我尝试推送容器镜像 https://cloud.google.com/container-registry/docs/pushing-and-pulling到容器注册表,它给了我以下错误,

被拒绝:项目“my-proj-123”的令牌交换失败。调用者没有权限“storage.buckets.create”。要配置权限,请按照以下位置的说明进行操作:https://cloud.google.com/container-registry/docs/access-control https://cloud.google.com/container-registry/docs/access-control

我必须遵循桶名验证 https://cloud.google.com/storage/docs/domain-name-verification?hl=en_US过程能够创建artifacts.my-proj-123.appspot.com桶。现在,当我尝试推送 docker 映像时,它不会抱怨storage.buckets.create许可,但仅给出:

拒绝:访问被拒绝。

我不知道我需要授予哪个用户访问权限。我给了存储管理员访问Compute Engine 默认服务帐号无济于事。我该如何修复它?


我能够将 Docker 映像从容器优化操作系统 https://cloud.google.com/container-registry/docs/quickstart.

如果您遇到权限问题,我建议您提供Compute Engine 默认服务帐号至少项目编辑器权限,仅用于测试目的。即使您只针对 Cloud Storage,流程的其他部分也可能需要更多权限。完成测试后,您可以创建一个具有较少权限的新服务帐户,并根据您的需求对其进行微调。

另外,还有一个替代方案gcloud for 验证 https://cloud.google.com/container-registry/docs/advanced-authentication#json_key_file。您可以按照以下方法尝试:

  1. 首先尝试使用以下命令下载 docker-credential-gcr:

    VERSION=1.5.0
    OS=linux  # or "darwin" for OSX, "windows" for Windows.
    ARCH=amd64  # or "386" for 32-bit OSs
    
    curl -fsSL "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v${VERSION}/docker-credential-gcr_${OS}_${ARCH}-${VERSION}.tar.gz" \
      | tar xz --to-stdout ./docker-credential-gcr \
      > /usr/bin/docker-credential-gcr && chmod +x /usr/bin/docker-credential-gcr
    
  2. 之后执行docker-credential-gcr configure-docker

  3. 下载 Compute Engine 默认服务帐号json key https://support.google.com/cloud/answer/6158849#serviceaccounts.

  4. Execute cat [your_service_account_credentials.json] | docker login -u _json_key --password-stdin https://[HOSTNAME]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法推送到 Google 容器注册表(访问被拒绝) 的相关文章

随机推荐