我创建了一个私有注册表,curl xx.xx.xx.xx:5000没问题。
我通过执行以下操作将图像推送到docker私有注册表中:
docker push xx.xx.xx.xx:5000/centos
它返回:
http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest
问题是如何从注册网站获取所有图像或命令。 我无法从docker注册表api中找到任何信息。 任何人都有帮助? :)
答案 0 :(得分:83)
现在,从docker客户端,您只需直接搜索您的私人注册表,而无需使用HTTP API或任何其他工具:
e.g。寻找centos图像:
docker search localhost:5000/centos
答案 1 :(得分:70)
从私有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"}]}
在这里提供更多背景是我如何开始我的注册表:
docker run \
-e SETTINGS_FLAVOR=local \
-e STORAGE_PATH=/registry \
-e SEARCH_BACKEND=sqlalchemy \
-e LOGLEVEL=DEBUG \
-p 5000:5000 \
registry
答案 2 :(得分:66)
所以我知道这是一个快速变化的领域但是(截至2015-09-08)我在Docker Registry HTTP API V2中找到了以下内容:
GET /v2/_catalog
GET /v2/<name>/tags/list
基于以下内容,我在本地注册表上工作(注册表:2 IMAGE ID 1e847b14150e365a95d76a9cc6b71cd67ca89905e3a0400fa44381ecf00890e1创建于2015-08-25T07:55:17.072):
$ curl -X GET http://localhost:5000/v2/_catalog
{"repositories":["ubuntu"]}
$ curl -X GET http://localhost:5000/v2/ubuntu/tags/list
{"name":"ubuntu","tags":["latest"]}
答案 3 :(得分:16)
目前没有对Docker Registry v2的搜索支持。
有一个long-running thread on the topic。目前的计划是支持最后使用extension进行搜索,该搜索应为ready by v2.1。
作为解决方法,请在运行注册表v2的计算机上执行以下操作:
> docker exec -it <your_registry_container_id> bash
> ls /var/lib/registry/docker/registry/v2/repositories/
图像位于与其命名空间相对应的子目录中,例如jwilder/nginx-proxy
答案 4 :(得分:12)
能够通过搜索&#39;库来获取我私人注册表中的所有内容:
docker search [my.registry.host]:[port]/library
返回(例如):
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
library/custom-image 0
library/another-image 0
library/hello-world 0
答案 5 :(得分:6)
我安装了atc- / docker-registry-web项目,该项目为我提供了UI并搜索了我的私有注册表。 https://github.com/atc-/docker-registry-web
它是dockerised,您可以通过
运行它docker run -p 8080:8080 -e REG1=http://registry_host.name:5000/v1/ atcol/docker-registry-ui
并浏览registry_ui_host.name:8080
答案 6 :(得分:5)
列出所有图片
docker search <registry_host>:<registry_port>/
列出像'vcs'
这样的图片docker search <registry_host>:<registry_port>/vcs
答案 7 :(得分:3)
目前AFAIK没有简单的方法可以做到这一点,因为这些信息应该由私人注册管理机构没有的索引存储。但根据您如何开始注册,您有两个选择:
docker diff <id_of_registry_container>
来获取有关容器fs更改的信息。所有推送的图像应该位于/ tmp / registry / repositories / 如果您使用了&#34; centos&#34;作为名称,它应该在/ tmp / registry / repositories / library / centos中。该文件夹将包含描述图像结构的文本文件。实际数据位于/ tmp / registry / images /.
答案 8 :(得分:0)
一行中的另一种方法(如果需要,替换您的实际路径/端口)。
示例:假设通用注册表: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
您可能需要调整剪切值以获得所需的输出。
答案 9 :(得分:0)
修改@mre的答案以仅通过一个命令获取列表(至少对Docker Registry v2有效)。
docker exec -it <your_registry_container_id> ls -a /var/lib/registry/docker/registry/v2/repositories/