无法从Google Compute Engine访问Google Container Registry

我试图将Google Container Registry中的Docker镜像加载到Google Compute Engine实例中。 (我需要的图片已经成功上传到GCR)

  1. 我已经login使用gcloud auth login ,然后尝试gcloud docker pull -- us.gcr.io/app-999/app导致ERROR: (gcloud.docker) Docker is not installed.

  2. 我已经尝试使用oauth进行身份validation,并通过普通的泊坞窗口进行通信。 当我在.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

这看起来像进步,因为至less它试图下载的东西。

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

我错过了什么吗?

谢谢你的帮助。

PS我也尝试从另一个registry(Docker Hub)加载一个容器,并且工作正常,但是我需要多个容器,并且想要降低开销。

联系Google支持后,他们通知我gcloud别名中存在一个错误。 这个bug是通过覆盖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' 

我已经试过了,现在可以使用了。

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