首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取docker注册表v2上的图像列表

如何获取docker注册表v2上的图像列表
EN

Stack Overflow用户
提问于 2015-07-07 00:47:40
回答 12查看 589.3K关注 0票数 278

我正在使用docker注册表v1,并且我对迁移到新版本v2很感兴趣。但是我需要一些方法来获取注册表中存在的图像列表;例如,使用注册表v1,我可以对http://myregistry:5000/v1/search?执行get请求,结果是:

代码语言:javascript
复制
{
  "num_results": 2,
  "query": "",
  "results": [
    {
      "description": "",
      "name": "deis/router"
    },
    {
      "description": "",
      "name": "deis/database"
    }
  ]
}

但我在official documentation上找不到类似的东西来获取注册表中的图像列表。有谁知道在新版本的v2上做这件事的方法?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2015-08-01 00:04:42

对于注册表V2的最新版本(截至2015-07-31),您可以从DockerHub获得this image

代码语言:javascript
复制
docker pull distribution/registry:master

列出所有存储库(有效的镜像):

代码语言:javascript
复制
curl -X GET https://myregistry:5000/v2/_catalog
> {"repositories":["redis","ubuntu"]}

列出存储库的所有标记:

代码语言:javascript
复制
curl -X GET https://myregistry:5000/v2/ubuntu/tags/list
> {"name":"ubuntu","tags":["14.04"]}

如果注册表需要身份验证,则必须在curl命令中指定用户名和密码

代码语言:javascript
复制
curl -X GET -u <user>:<pass> https://myregistry:5000/v2/_catalog
curl -X GET -u <user>:<pass> https://myregistry:5000/v2/ubuntu/tags/list
票数 526
EN

Stack Overflow用户

发布于 2016-01-25 23:53:28

这让我抓狂,但我终于把所有的东西都拼凑在一起了。截至2015年1月25日,我已经确认可以在docker V2注册表中列出图像(与上面提到的@jonatan完全相同。)

如果我有这方面的代表,我会支持这个答案。

相反,我将对答案进行扩展。由于注册中心https在设计时考虑到了安全性,因此我认为应该包括how to set it up with a self signed certrun the container with that cert,以便可以使用证书对其进行https调用:

这是我实际用来启动注册表的脚本:

代码语言:javascript
复制
sudo docker stop registry
sudo docker rm -v registry
sudo docker run -d \
  -p 5001:5001 \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  -v /data/registry:/var/lib/registry \
  -v /root/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ 
  -e REGISTRY_HTTP_DEBUG_ADDR=':5001' \
  registry:2.2.1

这对一些人来说可能是显而易见的,但我总是把密钥和证书混在一起。在调用@jonaton提到的**时需要引用的文件是上面列出的domain.crt。(因为我将domain.crt放在/root中,所以我将其复制到可以访问它的用户目录中。)

代码语言:javascript
复制
curl --cacert ~/domain.crt https://myregistry:5000/v2/_catalog
> {"repositories":["redis","ubuntu"]}

**上面的命令已更改:当我尝试时,-X GET实际上并不起作用。

注意:https://myregistry:5000 (如上所述)必须与指定给生成的证书的域匹配。

票数 23
EN

Stack Overflow用户

发布于 2016-03-03 16:49:15

为此,我们编写了一个命令行界面工具:docker-ls,它允许您浏览docker注册表,并支持通过令牌或基本身份验证进行身份验证。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31251356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档