Docker 1.6 和 Registy 2.0

Docker 1.6 and Registy 2.0

有没有人用 Docker 1.6 和新注册表 2.0 成功地尝试过搜索命令?

我已经使用 SSL 在 Nginx 后面设置了我的,到目前为止它运行良好。我可以毫无问题地 pushpull 图片。但是当我尝试 search 时,以下所有命令都会给出 404 响应:

curl -k -s -X GET https://username:password@my-docker-registry.com/v1/search
404 page not found

curl -k -s -X GET https://username:password@my-docker-registry.com/v2/search
404 page not found

root@ip-10-232-0-191:~# docker search username:password@my-docker-registry.com/hello-world
FATA[0000] Invalid repository name (admin:admin), only [a-z0-9-_.] are allowed

root@ip-10-232-0-191:~# docker search my-docker-registry.com/hello-world
FATA[0000] Error response from daemon: Unexpected status code 404

我想问问是否有人知道为什么以及使用 Docker 客户端搜索镜像注册表的正确方法是什么。

看看 API v2.0 documentation,他们是否根本不支持 search 功能?省略这样的功能似乎有点奇怪。

至少有些东西有效:)

root@ip-10-232-0-191:~# curl -k -s -X GET https://username:password@my-docker-registry.com/v2/hello-world/tags/list
{"name":"hello-world","tags":["latest"]}

迄今为止 - 注册表 v2.0.1 中缺少搜索 api,此问题正在讨论中 here。我相信搜索 api 旨在登陆 v2.1。

编辑:/v2/catalog endpointdistribution/registry:master

中可用

新注册表之前 api:

如果您正在使用 REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY,您可以列出该目录的内容

user@host:~#  tree $REGISTRY_FS_ROOTDIR/docker/registry/v2/repositories -L 2
***/docker/registry/v2/repositories
└── repository1
    └── image1

这可能对制作 quick web ui 有用,您可以调用它来完成此操作,或者如果您可以通过 ssh 访问存储存储库的主机:

ssh -T user@host -p <port> tree $REGISTRY_FS_ROOTDIR/docker/registry/ -L 2

请查看 compose example,它在 nginx 反向代理后面部署了 v1 和 v2 注册表

可从 https://github.com/docker/distribution 获得的最新版本 Docker 注册表支持目录 API。 (v2/_catalog)。这允许搜索存储库的能力。

如果有兴趣,您可以尝试 docker 我构建的图像注册表 CLI,以便在新的 Docker Registry v2 发行版中轻松使用搜索功能:(https://github.com/vivekjuneja/docker_registry_cli)

如果您使用的是 windows,这里有一个 Powershell 脚本,用于使用基本的 http 身份验证从 windows 查询 v2/_catalog

https://gist.github.com/so0k/b59382ea7fd959cf7040

仅供参考,要使用它,您必须 docker pull distribution/registry:master 而不是 docker pull registry:2registry:2 映像版本当前为 2.0.1,目录端点不附带。