30

我找不到如何管理私有注册表中的图像。我可以推送或拉取图像,因为我知道 id 但如何获取推送图像的列表?

举个例子,一个人想要查看其组织的私有注册表下的可用图像。她能怎么办?

除非我弄错了,否则我找不到 API 或 Web UI 来发现像 index.docker.io 这样的注册表内容与公共注册表一样。

是否有任何开源项目来管理这个?

谢谢。

4

6 回答 6

15

是否有任何开源项目来管理这个?

有一个容器化的 Web 应用程序提供一对多私有注册表的管理。它的名字是 Docker Registry UI,它是 FOSS。

源代码在 Github 上,您可以在容器中运行它,如下所示:

docker run -p 8080:8080 -v my_data_dir:/var/lib/h2/ atcol/docker-registry-ui

免责声明:我编写了网络应用程序,因为我自己找不到。我相信这回答了你的问题(如引述)。

于 2014-06-22T16:41:32.657 回答
12

谢谢托马斯!

要允许使用搜索 API,您必须通过指定环境变量 SEARCH_BACKEND 的值来启动容器,如下所示:

docker run -d -e SEARCH_BACKEND=sqlalchemy -p 5000:5000 --name registry samalba/docker-registry

然后我有这个查询的结果:

GET http://registry_host:5000/v1/search?q=base

Result :
{ 
   "num_results": 1, 
   "query": "base", 
   "results": [{"description": "", "name": "test/base-img"}]
}

要列出所有图像,您可以这样做:

GET http://registry_host:5000/v1/search

Result :
{ 
   "num_results": 2, 
   "query": "", 
   "results": [
       {"description": "", "name": "test/base-img"},
       {"description": "", "name": "test/base-test"}]
}

并了解图像的可用版本:

GET http://localhost:5000/v1/repositories/**test/base-img**/tags

Result :
{
  "0.1": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13",
  "0.2": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13",
  "0.3": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13"
}
于 2014-05-20T12:57:56.307 回答
11

我写了一个docker-registry-frontend,你可以在 github 上找到它。它允许您浏览您的私有注册表并执行通过 Docker 注册表 API v1 可用的几乎所有操作。另外,它可以单独作为 docker 容器运行。

这是带有一些屏幕截图的基本功能列表:https ://github.com/kwk/docker-registry-frontend/wiki/Features 。除了这些功能之外,还支持 SSL 加密和 Kerberos 身份验证。

于 2015-02-04T10:36:06.810 回答
5

我想为您介绍我的私有注册表前端,您可以从 github 或 dockerhub 尝试。你也可以在那里找到界面截图。

总而言之,它具有:
- 内部数据库 (BoltBD) 使其能够存储信息,因此它的响应速度比在其他项目中直接调用 api 后更快
- 应用程序可以解析、存储和显示来自注册表的信息,例如:
- 图像层信息:
- 名称/标签
- 图像大小和推送数量
- 上传和推送日期
- 图像创建命令历史
- 如果您有多个注册表并在一个地方观察它们,可以设置多个存储库
- 显示统计信息漂亮,针对日期绘制标签的上传数量和图像大小曲线


更新 2017-02-15
到目前为止,还添加了:

  • 找父母
  • 显示父母的树形图
  • 图像删除
  • 不记名令牌身份验证支持
于 2016-06-20T10:26:39.337 回答
1

据我所知,Docker 注册表有一个 REST API,与 Docker 本身非常相似。您可以在http://docs.docker.io/reference/api/registry_api/找到文档。但乍一看,我看不到仅列出所有图像的方法。

还有一个用于官方索引的 REST API(信息位于http://docs.docker.io/reference/api/docker-io_api/)。

编辑

我刚刚测试了 Docker 注册表 API,但它并不是那么不言自明。您可以查询某个仓库的所有镜像。就我而言,我的存储库称为“thomas/busybox”。我可以通过调用来查询那里的所有图像:

https://my-private-registry.com/v1/repositories/thomas/busybox/images

Result:

[
  {
    "id": "2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739"
  },
  {
    "id": "6c991eb934609424f761d3d0a7c79f4f72b76db286aa02e617659ac116aa7758"
  },
  {
    "id": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a"
  },
  {
    "id": "511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158"
  }
]

现在我知道我的存储库中有四个图像,我可以查询每个图像。第一个图像的查询将是:

https://my-private-registry.com/v1/images/2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739/json

Result:

{
  "id": "2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739",
  "parent": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a",
  "created": "2014-04-24T15:59:59.47081913Z",
  "container": "d15320d6935ca35bc4198e373f29e730f4c53cce32b3809c2fecec22eb30018b",
  "container_config": {
    "Hostname": "4964db5b599b",
    ...
    "Tty": false,
    "OpenStdin": false,
    "StdinOnce": false,
    "Env": [
      "HOME=\/",
      "PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin"
    ],
    "Cmd": [
      "\/bin\/sh",
      "-c",
      "#(nop) CMD [\/bin\/sh -c \/bin\/sh]"
    ],
    "Image": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a",
    ...
    "OnBuild": [

    ]
  },
  "docker_version": "0.10.0",
  "author": "J\u00c3\u00a9r\u00c3\u00b4me Petazzoni <jerome@docker.com>",
  "config": {
    "Hostname": "4964db5b599b",
    "Domainname": "",
    "User": "",
    "Memory": 0,
    ...
    "Env": [
      "HOME=\/",
      "PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin"
    ],
    "Cmd": [
      "\/bin\/sh",
      "-c",
      "\/bin\/sh"
    ],
    "Image": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a",
    ...
    "OnBuild": [

    ]
  },
  "architecture": "amd64",
  "os": "linux",
  "Size": 0
}

您也可以搜索图像,但我没有得到任何结果:

https://my-private-registry.com/v1/search?q=thomas

Result:

{"num_results": 0, "query": "thomas", "results": []}
于 2014-05-17T10:15:11.910 回答
0

Sonatype Nexus Repository Manager 3.0 具有Docker 的私有注册表

于 2016-06-08T20:18:48.140 回答