正在搜索 Google Container Registry

Searching the Google Container Registry

我一直在设置我的 kubernetes 集群,我一直在使用 Google Container Registry 来存储图像。

作为设置的一部分,我正在构建一些工具,我需要在其中搜索远程存储库中的图像,包括标签。

所以我的问题是: 如何在 Google Cloud Registry 中搜索图像?

我曾尝试使用 docker cli 进行搜索,但没有成功:

$ docker search eu.gcr.io/project-101
Error response from daemon: Unexpected status code 403

$ gcloud docker search eu.gcr.io/project-101
Error response from daemon: Unexpected status code 403

$ docker login -e not@val.id -u _token -p mytoken https://eu.gcr.io
WARNING: login credentials saved in /Users/drwho/.docker/config.json
Login Succeeded

$ docker search eu.gcr.io/project-101
Error response from daemon: Unexpected status code 403

$ docker search eu.gcr.io/not-known
Error response from daemon: Unexpected status code 404

如您所见,我尝试了很多不同的方法。最后一个选项可能是使用 Google 存储桶 API 并搜索文件系统 "manually"。

Docker 客户端到 1.7.0 只支持未经验证的搜索。例如,如果您搜索:

$ docker search gcr.io/google-containers/kube
NAME                                        DESCRIPTION   STARS     OFFICIAL   AUTOMATED
google-containers/hyperkube                               0                    
google-containers/kube-apiserver                          0                    
google-containers/kube-controller-manager                 0                    
google-containers/kube-scheduler                          0                    
google-containers/kube-ui                                 0                    
google-containers/kube2sky                                0                    
google-containers/kubectl                                 0         

我向 1.8.0 提交了一个 PR,它将对搜索进行身份验证,并以类似的方式为私有存储库工作。

今天出现 403(禁止访问)是因为 Docker 客户端实际上没有通过 gcloud dockerdocker login.

设置的身份验证

编辑: 作为解决方法,只需卷曲端点也不错:

$ curl -u _token:TOKEN "https://gcr.io/v1/search?q=QUERY" | \
    python -mjson.tool

您可以用 gcloud auth print-access-token 生成 TOKEN

我们支持 <project-id>[/image-substring] 形式的查询,例如google-containers/ube 将匹配 google-containers/kube2sky.

奇怪的是,gcr.io 不以任何明显的方式支持搜索。使用 https://console.cloud.google.com/gcr/images/google-containers/GLOBAL 进行搜索。