Любой проект API или веб-интерфейса для управления частным реестром Docker?
Я не могу найти, как управлять изображениями в частном реестре. Я могу нажать или вытащить изображение, потому что я знаю идентификатор, но как получить список нажатых изображений?
Возьмите, например, человека, который хочет видеть доступные изображения в частном реестре своей организации. Как она может это сделать?
Если я ошибаюсь, я не могу найти API или веб-интерфейс, чтобы обнаружить содержимое реестра, например index.docker.io, с помощью публичного реестра.
Есть ли какие-либо проекты с открытым исходным кодом для управления этим?
спасибо.
Ответы
Ответ 1
Спасибо Томасу!
Чтобы разрешить использование 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"
}
Ответ 2
Есть ли какие-либо проекты с открытым исходным кодом для управления этим?
Существует контейнерное веб-приложение, которое обеспечивает администрирование индивидуальных личных реестров "один-ко-многим". Его имя - Docker Registry UI, и это FOSS.
Источник находится в Github, и вы можете запустить его в контейнере следующим образом:
docker run -p 8080:8080 -v my_data_dir:/var/lib/h2/ atcol/docker-registry-ui
Отказ от ответственности: я написал веб-приложение, так как не мог найти его сам. Я считаю, что это отвечает на ваш вопрос (как указано).
Ответ 3
Я написал docker-registry-frontend, который вы можете найти в github. Он позволяет просматривать ваш частный реестр и делать почти все, что доступно через API-интерфейс Docker registry v1. Кроме того, он может запускаться как контейнер докеров самостоятельно.
Вот список основных функций с некоторыми скриншотами: https://github.com/kwk/docker-registry-frontend/wiki/Features. В дополнение к этим функциям поддерживаются SSL-шифрование и аутентификация Kerberos.
Ответ 4
Я хочу представить вам, мой frontend для частного реестра, вы можете попробовать его из github или dockerhub.
Также вы можете найти скриншоты интерфейса.
Подводя итог, он:
- внутренний db (BoltBD) дает ему возможность хранить информацию, и в результате он реагирует гораздо быстрее, чем после прямого вызова api, как в других проектах
- приложение может обрабатывать, хранить и показывать информацию из реестра, например:
- информация о слоях изображений:
- имя/тег
- размер изображения и число нажатий
- загрузить и установить даты
- история создания созданий изображений
- можно установить несколько репозиториев, если у вас есть несколько реестров и наблюдайте их в одном месте
- показать статистику довольно, рисовать кривые для количества загрузок и размеров изображений для тега с учетом дат
Обновление 2017-02-15
До сих пор также было добавлено:
- найти родителя
- показать дерево-график родителей
- удаление изображения
- Поддержка указателя токена носителя
Ответ 5
Насколько я понимаю, в реестре Docker есть REST API, очень похожий на сам Docker. Документацию можно найти в http://docs.docker.io/reference/api/registry_api/. Но на первый взгляд я не вижу метода, чтобы просто перечислить все изображения.
Существует также REST API для официального индекса (информация в http://docs.docker.io/reference/api/docker-io_api/).
ИЗМЕНИТЬ
Я только что протестировал API-интерфейс Docker, и это не так понятно. Вы можете запросить все изображения определенного репозитория. В моем случае мой репозиторий называется "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 <[email protected]>",
"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": []}
Ответ 6
Sonatype Nexus Repository Manager 3.0 имеет Частный реестр для докеров