无法从 Google Compute Engine 访问 Google Container Registry

Cannot access Google Container Registry from Google Compute Engine

我正在想方设法从 Google Container Registry 获取 Docker 图像到 Google Compute Engine 实例。 (我需要的图片已成功上传至GCR。)

  1. 我使用 gcloud auth login 登录,然后尝试 gcloud docker pull -- us.gcr.io/app-999/app 结果是 ERROR: (gcloud.docker) Docker is not installed..

  2. 我尝试使用 oauth 进行身份验证并通过正常的 docker 调用进行拉取。当我在 .docker/config.json 查看文件时,我看到了我的凭据。这样做,看起来它会起作用,但最终会这样结束:

    mbname@instance-1 ~ $ docker pull -- us.gcr.io/app-999/app Using default tag: latest latest: Pulling from app-999/app b7f33cc0b48e: Pulling fs layer 43a564ae36a3: Pulling fs layer b294f0e7874b: Pulling fs layer eb34a236f836: Waiting error pulling image configuration: unauthorized: authentication required

这看起来像是进步,因为至少它尝试下载了一些东西。

我也在我的本地机器上尝试了这两种方法,两种方法都成功了。

我是不是漏掉了什么?

感谢您的帮助。

P.S。我也试过从另一个注册表加载容器( Docker Hub) 并且效果很好,但我需要一个以上的容器并且想降低开支。

docker 应包含在 gcloud 的最新版本中。您可以通过 运行 gcloud components update

更新到最新版本的 gcloud

联系 Google 支持人员后,他们通知我 CoreOS gcloud 别名中存在错误。通过覆盖 shell 中的别名修复了此错误,如下所示:

alias gcloud='(docker images google/cloud-sdk || docker pull google/cloud-sdk) > /dev/null;docker run -t -i --net=host -v $HOME/.config:/.config -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker google/cloud-sdk gcloud'

我试过了,现在可以了。