我一直在设置我的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 Storage Bucket API并手动搜索文件系统"。
答案 0 :(得分:14)
通过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 docker
或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
匹配。
答案 1 :(得分:11)
奇怪的是,gcr.io并不以任何明显的方式支持搜索。使用https://console.cloud.google.com/gcr/images/google-containers/GLOBAL进行搜索。