在谷歌容器注册表中搜索

25

我一直在设置我的 Kubernetes 集群,使用 Google Container Registry 存储镜像。

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

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

我已经尝试使用 docker 命令行进行搜索,但没有成功:

$ 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并手动搜索文件系统。

2个回答

19

16

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         

我提交了一个 PR 到 1.8.0,它将对搜索进行身份验证,并对私有仓库执行类似的操作。

今天出现403(禁止)是因为 Docker 客户端实际上没有通过经由 gcloud dockerdocker login 设置的认证。

编辑:作为一种解决方法,只需 CURL 终端点就可以了,这并不太麻烦:

$ 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


不使用Docker客户端进行搜索是否可行? - Emil Ingerslev
3
您可以使用更简单的curl命令: curl -u _token:token https://eu.gcr.io/v1/search?q=search,该命令将为您执行基本的身份验证编码。 :) - Emil Ingerslev
7
我使用curl和jq工具很幸运地查看了所有标签 - curl -k -s -X GET https://gcr.io/v2/google_containers/kube-apiserver/tags/list | jq -r '.tags[]' - jdf
2
显然,gcloud 有新的 alpha 命令用于列出标签: gcloud alpha container images list-tags gcr.io/google-containers/kube-apiserver - TrinitronX
2
gcloud容器现已正式发布,因此您应该跳过“alpha”: gcloud container images list-tags gcr.io/google-containers/kube-apiserver - Jean Spector
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接