Как искать изображения из частного реестра 1.0 в docker?


Я сделал частный реестр, curl xx.xx.xx.xx:5000 в порядке. Я нажимаю на настройки личное реестра, выполнив: docker push xx.xx.xx.xx:5000/centos
это возвращение:
http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest

вопрос в том, как получить все изображения из веб-реестра или команды. Я не могу найти любую информацию из docker registry api. кто-нибудь помогает ? :)

9 70

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 client вы можете просто искать свой личный реестр напрямую без использования HTTP API или каких-либо дополнительных инструментов:

например, поиск изображения centos:

docker search localhost:5000/centos

поэтому я знаю, что это быстро меняющееся поле, но (по состоянию на 2015-09-08) я нашел следующее в Docker Registry 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

Он докеризован, и вы можете просто запустить его с помощью

docker run -p 8080:8080 -e REG1=http://registry_host.name:5000/v1/ atcol/docker-registry-ui

и просмотрите содержимое, перейдя к registry_ui_host.name:8080

В настоящее время AFAIK нет простого способа сделать это, так как эта информация должна храниться по индексу, которого нет в частном реестре. Но в зависимости от того, как вы начали реестре у вас есть 2 варианта:

  1. если вы запустили реестр без -v для хранения данных в отдельной папке хоста вы можете попробовать с docker diff <id_of_registry_container> при этом вы должны получить информацию об изменениях в контейнере fs. Все выталкиваемые изображения должны быть где-то в /tmp/registry/repositories/
  2. если вы запустили реестр с -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

возможно, вам придется настроить разрез значения, чтобы получить желаемый результат.