Как искать изображения из частного реестра 1.0 в docker?
Я сделал частный реестр, 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
вопрос в том, как получить все изображения из веб-реестра или команды. Я не могу найти какую-либо информацию из docker registry api. любой помогает ? :)
9 ответов
по состоянию на v 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
теперь из клиента docker вы можете просто искать свой частный реестр напрямую без использования HTTP-API или каких-либо дополнительных инструментов:
например, поиск изображения centos:
docker search localhost:5000/centos
поэтому я знаю, что это быстро меняющееся поле, но (по состоянию на 2015-09-08) я нашел следующее в Docker реестра HTTP API V2:
Список Репозиториев (ссылке)
GET /v2/_catalog
Список Тегов Изображений (ссылке)
GET /v2/<name>/tags/list
основываясь на том, что следующее работало для меня в локальном реестре (реестр: 2 Image 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"]}
в настоящее время есть нет поддержки поиска для Docker Registry v2.
было длительный поток по теме. Текущий план заключается в поддержке поиска с помощью расширение в конце концов, который должен быть готов к v2.1.
Как решение, выполните следующие действия на компьютере, где работает ваш реестр v2:
> docker exec -it <your_registry_container_id> bash
> ls /var/lib/registry/docker/registry/v2/repositories/
изображения находятся в подкаталогах, соответствующих их имен, например,jwilder/nginx-proxy
смог получить все в моем личном реестре, выполнив поиск только для "библиотеки":
docker search [my.registry.host]:[port]/library
возвращает (например):
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
library/custom-image 0
library/another-image 0
library/hello-world 0
Я установил проект atc- / docker-registry-web, который дает мне пользовательский интерфейс и поиск моего частного реестра. 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
В настоящее время AFAIK нет простого способа сделать это, так как эта информация должна храниться по индексу, которого нет в частном реестре. Но в зависимости от того, как вы начали реестре у вас есть 2 варианта:
- если вы запустили реестр без -v для хранения данных в отдельной папке хоста, вы можете попробовать с
docker diff <id_of_registry_container>
с этим вы должны получить информацию об изменениях в контейнере fs. Все изображения должны быть где-то в /tmp/registry/repositories/ - если вы запустили реестр с -v просто проверьте содержимое смонтированного каталога на хосте
Если вы использовали "centos" как имя, оно должно быть в /tmp/registry/repositories/library/centos. Эта папка будет содержать текстовые файлы, описывающие структуру изображения. Фактические данные находятся в /tmp / registry/images/.
Список всех изображений
docker search <registry_host>:<registry_port>/
список изображений, таких как'vcs'
docker search <registry_host>:<registry_port>/vcs
другой метод одна строка (замените ваш фактический путь/порты, если это необходимо). Пример: предполагается общий реестр: запуск 2.0 В работающем контейнере реестра есть файл журнала с именами изображений и тегов. Я экстраполирую данные следующим образом:
grep-r-o "vars.name=.* ВАР.ссылка.= " /var / lib / docker / containers/ / cut-c 167-225 / sed ' s / ver.*$//' | е с/Варс.имя=//' | Е С/ Варс.ссылка=/:/ ' / sort-u
возможно, Вам потребуется настроить разрез значения для получения желаемого результата.