tag run images imagenes hub example dockers docker docker-registry

run - download docker image



Cómo obtener una lista de imágenes en el acoplador v2 (11)

Obtener catálogos

Predeterminado, la API de registro devuelve 100 entradas del catálogo, existe el code :

Cuando enrollas la API de registro:

curl --cacert domain.crt https://your.registry:5000/v2/_catalog

es equivalente a:

curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=100

Este es un método de paginación.

Cuando la suma de las entradas más allá de 100, puede hacer de dos maneras:

Primero : dar un número mayor

curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=2000

Sencond : analizar la siguiente URL del enlazador

curl --cacert domain.crt https://your.registry:5000/v2/_catalog

Un elemento de enlace contenido en el encabezado de respuesta:

curl --cacert domain.crt https://your.registry:5000/v2/_catalog

encabezado de respuesta:

Link: </v2/_catalog?last=pro-octopus-ws&n=100>; rel="next"

El elemento de enlace tiene la última entrada de esta solicitud, luego puede solicitar la siguiente ''página'':

curl --cacert domain.crt https://your.registry:5000/v2/_catalog?last=pro-octopus-ws

Si el encabezado de respuesta contiene elemento de enlace , puede hacerlo en un bucle .

Obtener imágenes

Cuando obtiene el resultado del catálogo, lo sigue de la siguiente manera:

{ "repositories": [ "busybox", "ceph/mds" ] }

puedes obtener las imágenes en cada catálogo:

curl --cacert domain.crt https://your.registry:5000/v2/busybox/tags/list

devoluciones:

{"name":"busybox","tags":["latest"]}

Estoy usando docker registry v1 y estoy interesado en migrar a la versión más nueva, v2. Pero necesito alguna manera de obtener una lista de imágenes presentes en el registro; por ejemplo, con el registro v1, puedo ejecutar una solicitud GET a http://myregistry:5000/v1/search? y el resultado es:

{ "num_results": 2, "query": "", "results": [ { "description": "", "name": "deis/router" }, { "description": "", "name": "deis/database" } ] }

Pero no puedo encontrar en la documentación oficial algo similar para obtener una lista de imágenes en el registro. ¿Alguien sabe una manera de hacerlo en la nueva versión v2?


Como cada registro se ejecuta como un contenedor, el ID del contenedor tiene un archivo de registro asociado ID-json.log, este archivo de registro contiene vars.name = [image] y vars.reference = [tag]. Se puede usar un script para extrapolar e imprimir estos. Este es quizás uno de los métodos para listar imágenes enviadas al registro V2-2.0.1.



Escribí una herramienta de línea de comandos fácil de usar para listar imágenes de varias maneras (como enumerar todas las imágenes, enumerar todas las etiquetas de esas imágenes, enumerar todas las capas de esas etiquetas).

También le permite eliminar imágenes no utilizadas de varias maneras, como eliminar solo etiquetas antiguas de una sola imagen o de todas las imágenes, etc. Esto es conveniente cuando está llenando su registro desde un servidor de CI y desea conservar solo las versiones más recientes / estables.

Está escrito en python y no necesita descargar imágenes voluminosas de registro personalizadas.


Esto me ha estado volviendo loco, pero finalmente armé todas las piezas. A partir del 1/25/2015, he confirmado que es posible enumerar las imágenes en el registro del acoplador V2 (exactamente como @jonatan mencionado anteriormente).

Yo votaría esa respuesta, si tuviera el representante para eso.

En cambio, ampliaré la respuesta. Dado que el registro V2 está hecho pensando en la seguridad, creo que es apropiado incluir cómo configurarlo con un certificado autofirmado y ejecutar el contenedor con ese certificado para que se pueda realizar una llamada https con ese certificado:

Esta es la secuencia de comandos que realmente uso para iniciar el registro:

sudo docker stop registry sudo docker rm -v registry sudo docker run -d / -p 5001:5001 / -p 5000:5000 / --restart=always / --name registry / -v /data/registry:/var/lib/registry / -v /root/certs:/certs / -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt / -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key / -e REGISTRY_HTTP_DEBUG_ADDR='':5001'' / registry:2.2.1

Esto puede ser obvio para algunos, pero siempre me mezclo con claves y certs. El archivo al que se debe hacer referencia para hacer que la llamada @jonaton mencione arriba **, es el domain.crt listado arriba. (Desde que puse domain.crt en /root , hice una copia en el directorio de usuario donde se podía acceder).

curl --cacert ~/domain.crt https://myregistry:5000/v2/_catalog > {"repositories":["redis","ubuntu"]}

** El comando anterior ha sido cambiado: -X GET en realidad no funcionaba cuando lo probé.

Nota: https://myregistry:5000 (como el anterior) debe coincidir con el dominio otorgado al certificado generado.





Para ello, escribimos una herramienta de CLI: docker-ls Le permite navegar por un registro de acoplador y admite autenticación mediante token o autenticación básica.


Para obtener la versión más reciente (a partir de 2015-07-31) de Registry V2, puede obtener esta imagen de DockerHub:

docker pull distribution/registry:master

Listar todos los repositorios (efectivamente imágenes):

curl -X GET https://myregistry:5000/v2/_catalog > {"repositories":["redis","ubuntu"]}

Listar todas las etiquetas para un repositorio:

curl -X GET https://myregistry:5000/v2/ubuntu/tags/list > {"name":"ubuntu","tags":["14.04"]}


puedes buscar en

http: // <ip/hostname> : <port> / v2 / _catalog