如何从docker的私有1.0注册表中搜索图像?
我做了一个私人注册,curl xx.xx.xx.xx:5000就可以了。 我通过执行以下操作将图像推入docker private registry:如何从docker的私有1.0注册表中搜索图像?,docker,docker-registry,Docker,Docker Registry,我做了一个私人注册,curl xx.xx.xx.xx:5000就可以了。 我通过执行以下操作将图像推入docker private registry: docker推送xx.xx.xx.xx:5000/centos 它返回: http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest 问题是如何从注册表web或命令获取所有图像。 我无法从docker注册表api中找到任何信息。 有人帮忙吗?:) 目前还没有简单的方法可以做到这一点,因为这
docker推送xx.xx.xx.xx:5000/centos
它返回:
http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest
问题是如何从注册表web或命令获取所有图像。
我无法从docker注册表api中找到任何信息。
有人帮忙吗?:) 目前还没有简单的方法可以做到这一点,因为这些信息应该存储在私有注册表没有的索引中。但根据您启动注册表的方式,您有两个选项:
docker diff
,这样您应该可以获得有关容器fs中更改的信息。所有推送的映像都应该位于/tmp/registry/repositories中的某个位置/如果您使用“centos”作为名称,它应该位于/tmp/registry/repositories/library/centos中。此文件夹将包含描述图像结构的文本文件。实际数据位于/tmp/registry/images/中,从私有版本0.7.0开始,您可以执行以下操作:
$ curl -X GET http://localhost:5000/v1/search?q=postgresql
您将获得一个json负载:
{"num_results": 1, "query": "postgresql", "results": [{"description": "", "name": "library/postgresql"}]}
以下是我如何启动注册表的更多背景信息:
docker run \
-e SETTINGS_FLAVOR=local \
-e STORAGE_PATH=/registry \
-e SEARCH_BACKEND=sqlalchemy \
-e LOGLEVEL=DEBUG \
-p 5000:5000 \
registry
我安装了atc-/docker注册表web项目,该项目为我提供了UI并搜索我的私有注册表。 它是停靠的,你可以直接运行它 docker run -p 8080:8080 -e REG1=http://registry_host.name:5000/v1/ atcol/docker-registry-ui docker run-P8080:8080-e REG1=http://registry_host.name:5000/v1/ atcol/docker注册表用户界面
并通过浏览到
注册表ui\u主机查看内容。名称:8080
现在,从docker客户端,您只需直接搜索您的私人注册表,无需使用HTTP API或任何其他工具:
e、 g.搜索centos图像:
docker search localhost:5000/centos
只需搜索“库”,就可以将我的私人注册表中的所有内容都取回:
docker search [my.registry.host]:[port]/library
返回(例如):
目前没有Docker Registry v2的搜索支持 有一次。目前的计划是支持搜索,最后是一个,应该是 作为一种解决方法,请在运行registry v2的计算机上执行以下操作:
> docker exec -it <your_registry_container_id> bash
> ls /var/lib/registry/docker/registry/v2/repositories/
>docker exec-it bash
>ls/var/lib/registry/docker/registry/v2/repositories/
图像位于与其名称空间对应的子目录中,例如,
jwilder/nginx proxy
一行中的另一个方法(如果需要,替换实际路径/端口)
示例:假设一个通用注册表:2.0启动,
正在运行的注册表容器有一个保存图像和标记名的日志文件。我推断数据如下:
grep -r -o "vars\.name=.* vars.reference=.*" /var/lib/docker/containers/* | cut -c 167-225 | sed 's/ver.*$//' | sed 's/vars\.name=//' | sed 's/ vars\.reference=/:/' | sort -u
您可能需要调整切割值以获得所需的输出。因此我知道这是一个快速变化的字段,但(截至2015-09-08年),我在 列出存储库() 正在列出图像标记() 列出所有图像
docker search <registry_host>:<registry_port>/
docker搜索:/
列出像“vcs”这样的图像
docker search <registry_host>:<registry_port>/vcs
docker搜索:/vcs
修改@mre的答案,以便仅通过一个命令获取列表(至少对Docker Registry v2有效)
docker exec-it ls-a/var/lib/registry/docker/registry/v2/repositories/
对不起,我的意思是如何通过命令行或httpYes从private registry中搜索图像。我知道,但是如果没有索引,您无法在private registry中搜索图像。注册表中有/v1/search
api方法,但它需要索引后端。privateregistrycode()中有基本的索引实现,但它只提供独立模式下的基本函数。几天前我发现了这一点:但没有时间测试is。我的意思是如何通过命令行或httpso从私有注册表中搜索图像这是search
的未记录功能请参阅此问题的参考curl-X GEThttp://localhost:5000/v1/search
可以列出完成此操作的api v2的所有图像http://localhost:5000/v2/_catalog
作为记录,这对我使用Docker 1.3.1版build 4E9BBFat非常有效。这应该在cli帮助页面中明确提及@MarcelloRomani我认为这是正确的链接:在Ubuntu14.04上使用docker 1.8.1时,我从守护进程得到错误响应:意外状态代码404
,怎么了?我有同样的问题“docker search Repository_ip:5000/busybox”命令返回404,但是前面的命令“docker push repository\u ip:5000/busybox”已经成功。您可能需要对不安全的注册表使用curl,例如curl--unsecure-u“test:password”https://myregistrydomain.com:5000/v2/_catalog
“如果您启动docker注册表而不启用搜索,那么此UI将无法工作,原因也不清楚。我可以添加注册表,因为它返回HTTP 200,但是当导航到图像时,UI将报告“注册表不可访问”b/c返回HTTP 404。“如果docker exec-it bash命令不起作用,请尝试docker exec-it/bin/shAlso以列出存储库的标记:docker exec-it ls-a/var/lib/registry/docker/registry/v2/repositories/postgresql/_manifests/tags
GET /v2/<name>/tags/list
$ 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 search <registry_host>:<registry_port>/
docker search <registry_host>:<registry_port>/vcs
docker exec -it <your_registry_container_id> ls -a /var/lib/registry/docker/registry/v2/repositories/