library images imagenes hub dockers container docker docker-registry

images - download docker image



¿Cómo buscar imágenes del registro privado 1.0 en el acoplador? (9)

Hice un registro privado, curl xx.xx.xx.xx: 5000 está bien. Presioné una imagen en el registro privado de docker push xx.xx.xx.xx:5000/centos haciendo: docker push xx.xx.xx.xx:5000/centos
vuelve:
http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest

la pregunta es cómo obtener todas las imágenes de la web del registro u ordenar lo que sea. No puedo encontrar ninguna información de la API de registro de Docker. alguien ayuda? :)


A partir del v 0.7.0 del registry privado, puede hacer lo siguiente:

$ curl -X GET http://localhost:5000/v1/search?q=postgresql

y obtendrás una carga útil json:

{"num_results": 1, "query": "postgresql", "results": [{"description": "", "name": "library/postgresql"}]}

para dar más antecedentes aquí es cómo comencé mi registro:

docker run / -e SETTINGS_FLAVOR=local / -e STORAGE_PATH=/registry / -e SEARCH_BACKEND=sqlalchemy / -e LOGLEVEL=DEBUG / -p 5000:5000 / registry


Actualmente no hay soporte de búsqueda para Docker Registry v2 .

Hubo un hilo de larga duración sobre el tema . El plan actual es apoyar la búsqueda con una extension al final, que debe estar lista en v2.1 .

Como solución , ejecute lo siguiente en la máquina donde se ejecuta su registro v2:

> docker exec -it <your_registry_container_id> bash > ls /var/lib/registry/docker/registry/v2/repositories/

Las imágenes están en subdirectorios correspondientes a su espacio de nombres, por ejemplo, jwilder/nginx-proxy


Ahora desde el cliente de Docker puedes simplemente buscar directamente en tu registro privado sin usar las API de HTTP ni ninguna herramienta adicional:

por ejemplo, buscando una imagen de centos:

docker search localhost:5000/centos


Así que sé que este es un campo que cambia rápidamente, pero (a partir del 2015-09-08) encontré lo siguiente en Docker Registry HTTP API V2 :

Listado de repositorios ( link )

GET /v2/_catalog

Listado de etiquetas de imagen ( link )

GET /v2/<name>/tags/list

Basado en eso, lo siguiente funcionó para mí en un registro local (registro: 2 IMAGE ID 1e847b14150e365a95d76a9cc6b71cd67ca89905e3a0400fa44381ecf00890e1 creado en 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"]}


En la actualidad, AFAIK no es una forma fácil de hacerlo, ya que esta información debe almacenarse por índice que no tiene el registro privado. Pero dependiendo de cómo inició el registro, tiene 2 opciones:

  1. si inició el registro sin -v para almacenar datos en una carpeta de host separada, puede probar con docker diff <id_of_registry_container> con esto debería obtener información sobre los cambios en el contenedor fs. Todas las imágenes enviadas deben estar en algún lugar de / tmp / registry / repositories /
  2. si inició el registro con -v simplemente verifique el contenido del directorio montado en el host

Si usó "centos" como nombre, debería estar en / tmp / registry / repositories / library / centos. Esta carpeta contendrá archivos de texto que describen la estructura de la imagen. Los datos reales están en / tmp / registry / images /.


Instalé el proyecto atc- / docker-registry-web que me proporciona la IU y busco mi registro privado. https://github.com/atc-/docker-registry-web

Está acoplado y puedes ejecutarlo

docker run -p 8080:8080 -e REG1=http://registry_host.name:5000/v1/ atcol/docker-registry-ui

y revise los contenidos navegando a registry_ui_host.name:8080


Listar todas las imágenes

docker search <registry_host>:<registry_port>/

Listar imágenes como ''vcs''

docker search <registry_host>:<registry_port>/vcs


Otro método, una línea (sustituya su ruta real / puertos si es necesario). Ejemplo: asume un registro genérico: inicio 2.0 El contenedor de registro en ejecución tiene un archivo de registro que contiene nombres de imágenes y etiquetas. Extrapolo los datos de esta manera:

grep -r -o "vars.name =. * vars.reference =. " / var / lib / docker / containers / | corte -c 167-225 | sed ''s / ver. * $ //'' | sed ''s / vars.name = //'' | sed ''s / vars.reference = /: /'' | ordenar -u

Es posible que necesite ajustar los valores de corte para obtener la salida deseada.


Pude recuperar todo lo que estaba en mi registro privado al buscar solo ''biblioteca'':

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

Devoluciones (p. Ej.):

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