20

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

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

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

我试过没有运气使用dockercli 进行搜索:

$ 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 Storage Bucket API 并“手动”搜索文件系统。

4

2 回答 2

17

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

于 2017-06-02T19:22:06.690 回答
15

通过 1.7.0 的 Docker 客户端仅支持未经身份验证的搜索。例如,如果您搜索:

$ 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 (Forbidden) 是因为 Docker 客户端实际上并没有通过通过设置的身份验证gcloud dockeror docker login

编辑:作为一种解决方法,只 CURL 端点还不错:

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

您可以TOKEN使用gcloud auth print-access-token.

我们支持表单的查询<project-id>[/image-substring],例如google-containers/ube会匹配google-containers/kube2sky

于 2015-07-22T14:51:49.833 回答