Estoy usando Docker Registry v1 y estoy interesado en migrar a la versión más reciente, v2. Pero necesito alguna forma de obtener una lista de imágenes presentes en el registro; por ejemplo con el registro v1 puedo ejecutar una solicitud GET parahttp://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 cómo hacerlo en la nueva versión v2?
docker
docker-registry
kikicarbonell
fuente
fuente
Respuestas:
Para obtener la última versión (a partir del 31/07/2015) de Registry V2, puede obtener esta imagen de DockerHub:
Listar todos los repositorios (efectivamente imágenes):
Listar todas las etiquetas para un repositorio:
fuente
http://<registry-url>/v2/_catalog?n=<count>
con recuento, por ejemplo, 2000.curl -u <user>:<pass> -X GET ...
puedes buscar en
fuente
Obtenga catálogos
Por defecto, la API de registro devuelve 100 entradas de catálogo, ahí está el código :
Cuando riza la API de registro:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
equivale 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 entradas supera los 100, puede hacerlo de dos maneras:
Primero : dar un número mayor
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=2000
Sencond : analiza 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 un elemento de enlace , puede hacerlo en un bucle .
Obtener imágenes
Cuando obtienes el resultado del catálogo, es como sigue:
{ "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"]}
fuente
ceph/mds
? en general, para cualquier repositorio definido con/
-/v2/_catalog/ceph/mdt/tags/list
no funcionaLa última versión de Docker Registry disponible en https://github.com/docker/distribution es compatible con la API de catálogo. (v2 / _catalog). Esto permite la capacidad de buscar repositorios
Si está interesado, puede probar la CLI del registro de imágenes de Docker que construí para facilitar el uso de las funciones de búsqueda en la nueva distribución del Registro de Docker ( https://github.com/vivekjuneja/docker_registry_cli )
fuente
Escribimos una herramienta CLI para este propósito: docker-ls Le permite navegar por un registro de docker y admite autenticación a través de token o autenticación básica.
fuente
Esto me ha vuelto loco, pero finalmente puse todas las piezas juntas. A partir del 25/01/2015, he confirmado que es posible enumerar las imágenes en el registro docker V2 (exactamente como @jonatan mencionó anteriormente).
Volvería a votar esa respuesta, si tuviera el representante para ello.
En cambio, ampliaré la respuesta. Dado que el registro V2 está hecho con la seguridad en mente, creo que es apropiado incluir cómo configurarlo con un certificado autofirmado y ejecutar el contenedor con ese certificado para poder realizar una llamada https con ese certificado:
Este es el script que realmente uso para iniciar el registro:
Esto puede ser obvio para algunos, pero siempre me confundo con claves y certificados. El archivo al que se debe hacer referencia para realizar la llamada que @jonaton menciona arriba **, es el dominio.crt mencionado anteriormente. (Desde que puse domain.crt
/root
, hice una copia en el directorio de usuarios donde se podía acceder).** El comando anterior ha cambiado: -X GET en realidad no funcionó cuando lo probé.
Nota:
https://myregistry:5000
(como arriba) debe coincidir con el dominio otorgado al certificado generado.fuente
Instale el registro: 2.1.1 o posterior (puede consultar el último, aquí ) 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 ejemplo de script de Shell: https://gist.github.com/OndrejP/a2386d08e5308b0776c0
fuente
Aquí hay un pequeño y lindo delineador (usa JQ) para imprimir una lista de Repos y etiquetas asociadas.
Si no lo ha
jq
instalado, puede usar:brew install jq
fuente
Tuve que hacer lo mismo aquí y lo anterior funciona, excepto que tuve que proporcionar detalles de inicio de sesión, ya que era un repositorio local de acopladores.
Es según lo anterior pero con el suministro del nombre de usuario / contraseña en la URL.
Vuelve como JSON sin formato.
Lo canalicé a través del formateador de python para facilitar la lectura humana, en caso de que desee tenerlo en este formato.
fuente
Usando los puntos finales "/ v2 / _catalog" y "/ tags / list", realmente no puede enumerar todas las imágenes. Si empujó algunas imágenes diferentes y las etiquetó como "más recientes", ¡realmente no puede enumerar las imágenes antiguas! Todavía puede extraerlos si se refiere a ellos utilizando el resumen "docker pull ubuntu @ sha256: ac13c5d2 ...". Entonces la respuesta es: no hay forma de enumerar imágenes, solo puede enumerar etiquetas que no son lo mismo
fuente
Si algunos llegan hasta aquí.
Tomando lo que otros ya han dicho anteriormente. Aquí hay una línea que pone la respuesta en un archivo de texto formateado, json.
Esto parece
Es posible que deba cambiar el `? N = xxxx 'para que coincida con la cantidad de contenedores que tiene.
El siguiente es un modo de eliminar automáticamente los contenedores viejos y no utilizados
fuente
La funcionalidad del registro de búsqueda Docker v2 actualmente no es compatible en el momento de escribir este artículo. Ver discusión desde febrero de 2015: "proponer 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.
fuente
Escribí una herramienta de línea de comandos fácil de usar para enumerar 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 las etiquetas más antiguas de una sola imagen o de todas las imágenes, etc. Esto es conveniente cuando está completando su registro desde un servidor CI y desea mantener solo las versiones más recientes / estables.
Está escrito en Python y no necesita que descargue grandes y voluminosas imágenes de registro personalizadas.
fuente
Aquí hay un ejemplo que enumera todas las etiquetas de todas las imágenes en el registro. También maneja un registro configurado para autenticación básica HTTP.
Explicación:
fuente
Estos hilos datan de mucho tiempo, las herramientas más recientes que uno debería considerar son
skopeo
ycrane
.skopeo
admite la firma y tiene muchas otras características, aunquecrane
es un poco más minimalista y me resultó más fácil integrarlo en un simple script de shell.fuente
Dado que cada registro se ejecuta como un contenedor, la 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 un método para enumerar las imágenes enviadas al registro V2-2.0.1.
fuente