如何从docker中的私有1.0注册表中搜索图像?链接链接

问题描述 投票:71回答:10

我做了一个私人注册表,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

问题是如何从注册表Web或命令获取所有图像。我无法从docker注册表api中找到任何信息。任何人都有帮助? :)

docker docker-registry
10个回答
70
投票

从私人registry的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

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

您可能需要调整剪切值以获得所需的输出。


84
投票

现在,从docker客户端,您只需直接搜索您的私人注册表,而无需使用HTTP API或任何额外的工具:

例如搜索centos图像:

docker search localhost:5000/centos


66
投票

所以我知道这是一个快速变化的领域但是(截至2015-09-08)我在Docker Registry HTTP API V2发现了以下内容:

Listing Repositories (link)

GET /v2/_catalog

Listing Image Tags (link)

GET /v2/<name>/tags/list

基于以下内容,我在本地注册表上工作(注册表:2图像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"]}

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


12
投票

能够通过搜索“库”来获取我的私人注册表中的所有内容:

docker search [my.registry.host]:[port]/library

Retours(呃):

NAME                    DESCRIPTION   STARS     OFFICIAL   AUTOMATED
library/custom-image                  0                    
library/another-image                 0                    
library/hello-world                   0

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查看内容


5
投票

列出所有图像

docker search <registry_host>:<registry_port>/

列出图像'vcs'

docker search <registry_host>:<registry_port>/vcs

3
投票

目前AFAIK没有简单的方法可以做到这一点,因为这些信息应该由私人注册管理机构没有的索引存储。但根据您如何开始注册,您有两个选择:

  1. 如果您在没有-v的情况下启动注册表以将数据存储在单独的主机文件夹中,您可以尝试使用docker diff <id_of_registry_container>,您应该获得有关容器fs更改的信息。所有推送的图像应该位于/ tmp / registry / repositories /中的某个位置
  2. 如果您使用-v启动注册表,只需检查主机上已安装目录的内容

如果你使用“centos”作为名称,它应该在/ tmp / registry / repositories / library / centos中。该文件夹将包含描述图像结构的文本文件。实际数据位于/ tmp / registry / images /中。


0
投票

修改@mre的答案以从一个命令获取列表(至少对Docker Registry v2有效)。

docker exec -it <your_registry_container_id> ls -a /var/lib/registry/docker/registry/v2/repositories/
© www.soinside.com 2019 - 2024. All rights reserved.