Я использую Docker Registry v1, и я заинтересован в переходе на более новую версию, v2. Но мне нужен какой-то способ получить список изображений, присутствующих в реестре; например, с реестром v1 я могу выполнить запрос GET http://myregistry:5000/v1/search?
и в результате:
{
"num_results": 2,
"query": "",
"results": [
{
"description": "",
"name": "deis/router"
},
{
"description": "",
"name": "deis/database"
}
]
}
Но я не могу найти в официальной документации нечто подобное, чтобы получить список изображений в реестре. Кто-нибудь знает способ сделать это на новой версии v2?
docker
docker-registry
kikicarbonell
источник
источник
Ответы:
Для последней (по состоянию на 2015-07-31) версии Registry V2 вы можете получить этот образ из DockerHub:
Перечислите все репозитории (фактически изображения):
Перечислите все теги для хранилища:
источник
http://<registry-url>/v2/_catalog?n=<count>
например, 2000.curl -u <user>:<pass> -X GET ...
Вы можете искать на
источник
Получить каталоги
По умолчанию, реестр API возвращает 100 записей каталога, есть код :
Когда вы скручиваете API реестра:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
это эквивалентно :
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=100
Это метод пагинации.
Когда сумма записей превышает 100, вы можете сделать это двумя способами:
Первый : дать большее число
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=2000
Sencond : разбор следующего линкера
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
Элемент ссылки, содержащийся в заголовке ответа:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
заголовок ответа:
Link: </v2/_catalog?last=pro-octopus-ws&n=100>; rel="next"
Элемент link имеет последнюю запись этого запроса, затем вы можете запросить следующую «страницу»:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?last=pro-octopus-ws
Если заголовок ответа содержит элемент ссылки , вы можете сделать это в цикле .
Получить изображения
Когда вы получаете результат каталога, он выглядит следующим образом:
{ "repositories": [ "busybox", "ceph/mds" ] }
Вы можете получить изображения в каждом каталоге:
curl --cacert domain.crt https://your.registry:5000/v2/busybox/tags/list
возвращает:
{"name":"busybox","tags":["latest"]}
источник
ceph/mds
? в общем, для любого репозитория, определенного с/
-/v2/_catalog/ceph/mdt/tags/list
не работаетПоследняя версия Docker Registry, доступная по адресу https://github.com/docker/distribution, поддерживает Каталог API. (v2 / _catalog). Это позволяет осуществлять поиск в хранилищах.
Если вам интересно, вы можете попробовать CLI реестра образов Docker, который я создал, чтобы упростить использование функций поиска в новом дистрибутиве Docker Registry ( https://github.com/vivekjuneja/docker_registry_cli )
источник
Для этой цели мы написали инструмент CLI: docker-ls. Он позволяет просматривать реестр Docker и поддерживает аутентификацию с помощью токена или базовой аутентификации.
источник
Это сводило меня с ума, но я наконец собрал все воедино. По состоянию на 25.01.2015 я подтвердил, что можно перечислить изображения в реестр Docker V2 (в точности как упомянуто выше @jonatan).
Я бы проголосовал за этот ответ, если бы у меня был представитель для него.
Вместо этого я подробно остановлюсь на ответе. Поскольку реестр V2 создан с учетом требований безопасности, я считаю целесообразным включить его настройку с помощью самозаверяющего сертификата и запустить контейнер с этим сертификатом. , чтобы с ним был сделан вызов https:
Это скрипт, который я на самом деле использую для запуска реестра:
Это может быть очевидно для некоторых, но я всегда путаюсь с ключами и сертификатами. Файл, на который нужно сослаться для упоминания вызова @jonaton выше **, - это домен domain.crt, указанный выше. (Так как я поместил domain.crt
/root
, я сделал копию в пользовательский каталог, где он может быть доступен.)** Команда выше была изменена: -X GET на самом деле не работал, когда я попробовал.
Примечание:
https://myregistry:5000
(как указано выше) должен соответствовать домену, указанному для сгенерированного сертификата.источник
Установите реестр: 2.1.1 или новее (вы можете проверить последний здесь ) и используйте GET / v2 / _catalog для получения списка.
https://github.com/docker/distribution/blob/master/docs/spec/api.md#listing-repositories
Листать все изображения на примере сценария Shell: https://gist.github.com/OndrejP/a2386d08e5308b0776c0
источник
Вот хороший маленький лайнер (использует JQ) для распечатки списка Repos и связанных тегов.
Если вы не
jq
установили, вы можете использовать:brew install jq
источник
Я должен был сделать то же самое здесь и выше, за исключением того, что я должен был предоставить данные для входа в систему, так как это было локальное хранилище докеров.
Это как указано выше, но с указанием имени пользователя / пароля в URL.
Это возвращается как неформатированный JSON.
Я передал его через средство форматирования python для удобства чтения на случай, если вы захотите иметь его в этом формате.
источник
Используя конечные точки "/ v2 / _catalog" и "/ tags / list", вы не сможете составить список всех изображений. Если вы нажали несколько разных изображений и отметили их как «последние», вы не сможете перечислить старые изображения! Вы по-прежнему можете тянуть их, если ссылаетесь на них с помощью дайджеста «docker pull ubuntu @ sha256: ac13c5d2 ...». Таким образом, ответ - нет возможности перечислять изображения, вы можете перечислить только теги, которые не совпадают
источник
Если некоторые на это далеко.
Принимая то, что другие уже сказали выше. Вот строчка, которая помещает ответ в текстовый файл в формате json.
Это выглядит как
Возможно, вам придется изменить `? N = xxxx ', чтобы соответствовать количеству контейнеров, которые у вас есть.
Следующим является способ автоматического удаления старых и неиспользуемых контейнеров.
источник
Функциональность Docker search Registry v2 на данный момент не поддерживается. Смотрите обсуждение с февраля 2015 года: «Предложить функцию поиска в реестре # 206» https://github.com/docker/distribution/issues/206
Я написал скрипт, который вы можете найти: https://github.com/BradleyA/Search-docker-registry-v2-script.1.0 Это не красиво, но он получает информацию, необходимую из частного реестра.
источник
Я написал простой в использовании инструмент командной строки для перечисления изображений различными способами (например, список всех изображений, список всех тегов этих изображений, список всех слоев этих тегов).
Он также позволяет удалять неиспользуемые изображения различными способами, например удалять только старые теги одного изображения или из всех изображений и т. Д. Это удобно, когда вы заполняете реестр с сервера CI и хотите сохранить только последние / стабильные версии.
Он написан на python и не требует загрузки больших пользовательских образов реестра.
источник
Вот пример, в котором перечислены все теги всех изображений в реестре. Он также обрабатывает реестр, настроенный для аутентификации HTTP Basic.
Объяснение:
источник
Эта тема восходит к давно, большинство последних инструментов, которые следует учитывать,
skopeo
иcrane
.skopeo
поддерживает подпись и имеет много других функций, ноcrane
немного более минималистичен, и мне было проще интегрироваться в простой скрипт оболочки.источник
Поскольку каждый реестр работает как контейнер, у идентификатора контейнера есть связанный файл журнала ID-json.log, этот файл журнала содержит vars.name = [image] и vars.reference = [tag]. Сценарий может быть использован для экстраполяции и печати. Это, пожалуй, один из способов вывода изображений, помещенных в реестр V2-2.0.1.
источник