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

Я сделал частный реестр, 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

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

Ответ 1

Начиная с v 0.7.0 частного registry вы можете:

$ 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

Ответ 2

Теперь от клиента докеров вы можете просто напрямую искать свой частный реестр, не используя API-интерфейсы HTTP или любые дополнительные инструменты:

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

docker search localhost:5000/centos

Ответ 3

Итак, я знаю, что это быстро меняющееся поле, но (по состоянию на 2015-09-08) я нашел следующее в Docker Registry HTTP API V2:

Список репозиториев (ссылка)

GET /v2/_catalog

Объявление тегов изображений (ссылка)

GET /v2/<name>/tags/list

Исходя из этого, я работал в локальном реестре (реестр: 2 ИДЕНТИФИКАТОР 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"]}

Ответ 4

В настоящее время нет поддержки поиска для 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

Ответ 5

Было возможно получить все в моем личном реестре, выполнив поиск только для библиотеки:

docker search [my.registry.host]:[port]/library

Возвращает (например):

NAME                    DESCRIPTION   STARS     OFFICIAL   AUTOMATED
library/custom-image                  0                    
library/another-image                 0                    
library/hello-world                   0

Ответ 6

Я установил проект 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

Ответ 7

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

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

Если вы использовали имя "centos" как имя, оно должно быть в /tmp/registry/repositories/library/centos. Эта папка будет содержать текстовые файлы, которые описывают структуру изображения. Фактические данные находятся в/tmp/registry/images/.

Ответ 8

Список всех изображений

docker search <registry_host>:<registry_port>/

Список изображений, таких как 'vcs'

docker search <registry_host>:<registry_port>/vcs

Ответ 9

Другой метод - одна строка (при необходимости замените ваш фактический путь/порты). Пример: предполагает общий реестр: запуск 2.0 В рабочем контейнере реестра есть файл журнала, в котором хранятся имена изображений и тегов. Я экстраполирую данные следующим образом:

grep -r -o "vars.name =. * vars.reference =." /var/lib/docker/ контейнеры/| cut -c 167-225 | sed 's/ver. * $//' | sed 's/vars.name =//' | sed 's/vars.reference =/:/' | sort -u

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