无法从Google Compute Engine访问Google Container Registry
我试图将Google Container Registry中的Docker镜像加载到Google Compute Engine实例中。 (我需要的图片已经成功上传到GCR)
-
我已经login使用
gcloud auth login
,然后尝试gcloud docker pull -- us.gcr.io/app-999/app
导致ERROR: (gcloud.docker) Docker is not installed.
。 -
我已经尝试使用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