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.
Consulte la respuesta de @ jonathan a below o los documentos API de registro aquí: https://docs.docker.com/registry/spec/api/
Si busca "listado", verá que el soporte se agregó en la versión e
.
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.
Instale el registro: 2.1.1 o posterior (puede verificar el último, here ) y use GET / v2 / _catalog para obtener la lista.
https://github.com/docker/distribution/blob/master/docs/spec/api.md#listing-repositories
Lista de todas las imágenes por script de Shell ejemplo: https://gist.github.com/OndrejP/a2386d08e5308b0776c0
La última versión de Docker Registry disponible en https://github.com/docker/distribution compatible con Catalog API. (v2 / _catalog). Esto permite la capacidad de buscar repositorios
Si está interesado, puede probar la CLI de registro de imágenes docker que construí para facilitar el uso de las funciones de búsqueda en la nueva distribución del Registro Docker ( https://github.com/vivekjuneja/docker_registry_cli )
La funcionalidad de Docker search registry v2 actualmente no es compatible al momento de escribir este documento. Ver discusión desde febrero de 2015: "proponer la funcionalidad de búsqueda de registro # 206" https://github.com/docker/distribution/issues/206
Escribí un script que puedes encontrar: https://github.com/BradleyA/Search-docker-registry-v2-script.1.0 No es bonito, pero obtiene la información necesaria del registro privado.
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