如何在Docker中从私有1.0registry中search图像?
我做了一个私人registry,curlxx.xx.xx.xx:5000是好的。 我通过执行一个图像到docker私人registry中: docker push xx.xx.xx.xx:5000/centos
它返回:
http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest
问题是如何从registryweb或命令获取所有图像。 我无法从dockerregistryAPIfind任何信息。 任何一个帮助? 🙂
从私有registry的v 0.7.0开始,您可以执行以下操作:
$ curl -X GET http://localhost:5000/v1/search?q=postgresql
你会得到一个JSON有效载荷:
{"num_results": 1, "query": "postgresql", "results": [{"description": "", "name": "library/postgresql"}]}
给更多的背景这里是我如何开始我的registry:
docker run \ -e SETTINGS_FLAVOR=local \ -e STORAGE_PATH=/registry \ -e SEARCH_BACKEND=sqlalchemy \ -e LOGLEVEL=DEBUG \ -p 5000:5000 \ registry
现在从docker客户端,您可以直接search您的私人registry,而不使用HTTP API或任何额外的工具:
例如searchcentos图像:
docker search localhost:5000/centos
所以我知道这是一个快速变化的领域,但(截至2015-09-08)我在Docker Registry HTTP API V2中发现了以下内容:
清单存储库( 链接 )
GET /v2/_catalog
列表图片标签( 链接 )
GET /v2/<name>/tags/list
基于以下原因,本地注册pipe理机构(注册pipe理机构:2015-08-25T07:55:17.072创build了2个图像ID 1e847b14150e365a95d76a9cc6b71cd67ca89905e3a0400fa44381ecf00890e1):
$ curl -X GET http://localhost:5000/v2/_catalog {"repositories":["ubuntu"]} $ curl -X GET http://localhost:5000/v2/ubuntu/tags/list {"name":"ubuntu","tags":["latest"]}
目前,Docker Registry v2没有search支持 。
这个话题有一个长期的话题 。 目前的计划是最终支持search扩展 ,这应该在v2.1中准备就绪 。
作为解决方法 ,请在运行registryv2的计算机上执行以下操作:
> docker exec -it <your_registry_container_id> bash > ls /var/lib/registry/docker/registry/v2/repositories/
这些图像位于与其名称空间相对应的子目录中,例如jwilder/nginx-proxy
能够通过search“库”来获取私人registry中的所有内容:
docker search [my.registry.host]:[port]/library
退货(例如):
NAME DESCRIPTION STARS OFFICIAL AUTOMATED library/custom-image 0 library/another-image 0 library/hello-world 0
我安装了atc- / docker-registry-web项目,为我提供UI和search我的私人registry。 https://github.com/atc-/docker-registry-web
它是dockerised,你可以运行它
docker运行-p 8080:8080 -e REG1 = http://registry_host.name:5000 / v1 / atcol / docker-registry-ui
并通过浏览到registry_ui_host.name:8080
来查看内容
目前AFAIK没有简单的方法来做到这一点,因为这些信息应该被私人registry没有的索引存储。 但取决于你如何开始registry你有2个选项:
- 如果你开始注册时没有使用-v将数据存储在单独的主机文件夹中,那么你可以使用
docker diff <id_of_registry_container>
来尝试使用这个文件,你应该得到关于容器fs更改的信息。 所有推送的图像应该在/ tmp / registry / repositories / - 如果您使用-v开始注册,只需检查主机上安装的目录的内容
如果你使用“centos”作为名字,它应该在/ tmp / registry / repositories / library / centos中。 该文件夹将包含描述图像结构的文本文件。 实际数据在/ tmp / registry / images /中。
列出所有图像
docker search <registry_host>:<registry_port>/
列出像'VCS'
docker search <registry_host>:<registry_port>/vcs
另一种方法一行(如果需要replace你的实际path/端口)。 示例:假设一个通用registry:2.0启动正在运行的registry容器有一个保存图像和标签名称的日志文件。 我推断这样的数据:
grep -r -o“vars.name =。* vars.reference =。 ”/ var / lib / docker / containers / | 切割-c 167-225 | sed's / ver。* $ //'| sed's / vars.name = //'| sed's / vars.reference = /:/'| sorting-u
您可能需要调整切割值以获得所需的输出。