it-roy-ru.com

Как искать изображения из личного реестра 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

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

71
edwardsbean

Начиная с версии 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
70
faide

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

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

docker search localhost:5000/centos

83
iTech

Так что я знаю, что это быстро меняющееся поле, но (по состоянию на 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"]}
65
snth

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

15
mre

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

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

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

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

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

6
Larisa Sabban

В настоящее время 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 /.

3
odk

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

docker search <registry_Host>:<registry_port>/

Список изображений, таких как «VCS»

docker search <registry_Host>:<registry_port>/vcs
3
smishra

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

grep -r -o "vars.name =. * vars.reference =."/var/lib/docker/Containers/| cut -c 167-225 | sed 's/ver. * $ //' | sed 's/vars.name = //' | sed 's/vars.reference = /: /' | сортировать -у

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

0
Phil Pinkerton

Изменение ответа от @mre для получения списка только одной командой (действительно, по крайней мере, для Docker Registry v2)

docker exec -it ls -a/var/lib/registry/docker/registry/v2/repositories /

0
user9269906