我找不到如何管理私有注册表中的图像。我可以推送或拉取图像,因为我知道 id 但如何获取推送图像的列表?
举个例子,一个人想要查看其组织的私有注册表下的可用图像。她能怎么办?
除非我弄错了,否则我找不到 API 或 Web UI 来发现像 index.docker.io 这样的注册表内容与公共注册表一样。
是否有任何开源项目来管理这个?
谢谢。
我找不到如何管理私有注册表中的图像。我可以推送或拉取图像,因为我知道 id 但如何获取推送图像的列表?
举个例子,一个人想要查看其组织的私有注册表下的可用图像。她能怎么办?
除非我弄错了,否则我找不到 API 或 Web UI 来发现像 index.docker.io 这样的注册表内容与公共注册表一样。
是否有任何开源项目来管理这个?
谢谢。
是否有任何开源项目来管理这个?
有一个容器化的 Web 应用程序提供一对多私有注册表的管理。它的名字是 Docker Registry UI,它是 FOSS。
源代码在 Github 上,您可以在容器中运行它,如下所示:
docker run -p 8080:8080 -v my_data_dir:/var/lib/h2/ atcol/docker-registry-ui
免责声明:我编写了网络应用程序,因为我自己找不到。我相信这回答了你的问题(如引述)。
谢谢托马斯!
要允许使用搜索 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"
}
我写了一个docker-registry-frontend,你可以在 github 上找到它。它允许您浏览您的私有注册表并执行通过 Docker 注册表 API v1 可用的几乎所有操作。另外,它可以单独作为 docker 容器运行。
这是带有一些屏幕截图的基本功能列表:https ://github.com/kwk/docker-registry-frontend/wiki/Features 。除了这些功能之外,还支持 SSL 加密和 Kerberos 身份验证。
我想为您介绍我的私有注册表前端,您可以从 github 或 dockerhub 尝试。你也可以在那里找到界面截图。
总而言之,它具有:
- 内部数据库 (BoltBD) 使其能够存储信息,因此它的响应速度比在其他项目中直接调用 api 后更快
- 应用程序可以解析、存储和显示来自注册表的信息,例如:
- 图像层信息:
- 名称/标签
- 图像大小和推送数量
- 上传和推送日期
- 图像创建命令历史
- 如果您有多个注册表并在一个地方观察它们,可以设置多个存储库
- 显示统计信息漂亮,针对日期绘制标签的上传数量和图像大小曲线
更新 2017-02-15
到目前为止,还添加了:
据我所知,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": []}
Sonatype Nexus Repository Manager 3.0 具有Docker 的私有注册表