search curl docker http-status-code-404 docker-registry

search - Docker registry 2.0 API v2



curl http-status-code-404 (8)

Saqué y configuré el registro de acoplador local: 2.0

He intentado forzar una imagen con éxito, pero cuando intento buscar una imagen obtengo 404:

root@ip-10-232-0-153:~# curl -v -X GET http://localhost:5000/v2/search * Hostname was NOT found in DNS cache * Trying 127.0.0.1... * Connected to localhost (127.0.0.1) port 5000 (#0) > GET /v2/search HTTP/1.1 > User-Agent: curl/7.35.0 > Host: localhost:5000 > Accept: */* > < HTTP/1.1 404 Not Found < Content-Type: text/plain; charset=utf-8 < Docker-Distribution-Api-Version: registry/2.0 < Date: Fri, 08 May 2015 00:00:45 GMT < Content-Length: 19 < 404 page not found * Connection #0 to host localhost left intact

También cuando intento curvar localhost: 5000, obtengo un 404:

404 page not found



si está en Windows, aquí hay un script de Powershell para consultar el v2/_catalog desde Windows con http auth básica.

https://gist.github.com/so0k/b59382ea7fd959cf7040

FYI, para usar esto, tiene que docker pull distribution/registry:master de docker pull registry:2 docker pull distribution/registry:master lugar del docker pull registry:2 . el registry:2 versión de registry:2 imágenes actualmente es 2.0.1 que no viene con el punto final del catálogo.


En Linux (Centos 7), utilizo esto siempre que la imagen de registro sea el único contenedor en ejecución: esto mostrará una lista de todas las imágenes enviadas al resistry / contenedor. Lo puse en un guión y pellizqué los parámetros de corte para obtener lo que quería, ya que la longitud de los nombres de las imágenes varía un poco. ejecutar como sudo "script-name.sh"

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


Correcto.

Es simplemente un ejemplo de una implementación que funciona para obtener una lista de imágenes. Sí, se supone que se trata de un inicio genérico de registry2.0. por ejemplo $ sudo docker run --name = myregistry -d -p port: port myregistry: 1.0.

Básicamente, el punto es que cada contenedor tiene un archivo de registro ... algunos-ruta / contenedores ... ID-json.log. En ese archivo, la información se almacena sobre las imágenes enviadas al registro en ejecución. Por lo tanto, se puede usar para extrapolar una lista de imágenes. Tan crudo como es, es mejor que nada. No es una solución al problema más grande de búsqueda / catálogo, sino una forma de obtener una lista de imágenes. Es una solución muy personalizada para resolver un problema mientras se espera la solución "oficial".


Hoy probé el registry:master imagen registry:master , pero no existe.

xotl@xotl-VM:~$ docker run registry:master Unable to find image ''registry:master'' locally Pulling repository docker.io/library/registry Tag master not found in repository docker.io/library/registry xotl@xotl-VM:~$

Ahora puede ejecutar el registry:2 y tendrá el punto final.

Si visito http://localhost:5000/v2/_catalog en mi máquina, puedo ver esta salida {"repositories":["ubuntu"]} , que es correcta. También probé http://localhost:5000/v2/ubuntu/tags/list y obtuve esta respuesta {"name":"ubuntu","tags":["latest"]} , así que funciona.

Puede echar un vistazo a los documentos .


@Xotl curl -X GET registry.com:5000/v2/lashou/centos/tags/list {"errors":[{"code":"NAME_UNKNOWN","message":"repository name not known to registry","detail":{"name":"lashou/centos"}}]}


ACTUALIZACIÓN (14 de abril de 2016): todavía no está aquí en la hoja de ruta de distribución , pero aquí hay un problema particular sobre la búsqueda .

ACTUALIZACIÓN (12 de noviembre de 2015): los puntos finales API aún no existen y aún no están en la hoja de ruta del Registro Docker.

El problema aquí es que el nuevo registro de v2 Docker no es compatible con ese punto final en particular aún , a partir de esta pregunta y respuesta. Puede verificar la fuente en sí misma para los puntos finales de la ruta, y verá que la mayoría de los puntos finales API involucran operaciones simples como subir y etiquetar, pero aún no hay implementación del punto final de búsqueda. Aquí es importante tener en cuenta que el registro v2 es un proyecto completamente diferente que el registro v1. Incluso está escrito en un lenguaje completamente diferente (v1 era un proyecto de Python, mientras que v2 usa Go, que está más en línea con el resto de los proyectos de Docker). Me tomó un tiempo y una lectura seria entender la dicotomía aquí entre los registros. Vale la pena ver este particular tema de Github sobre el registro de v2 para profundizar en una discusión reciente sobre el estado del registro de v2, así como algunas discusiones sobre dónde lo han estado llevando.

Por lo tanto, aún no hay un punto final de búsqueda en el registro de v2. Puede listar su imagen por etiqueta o por el nombre de la imagen como se menciona en la tarea número 8 en esta documentación .


La funcionalidad de búsqueda de registro de Docker v2 no es compatible al momento de escribir esto. Ver discusión desde febrero de 2015: https://github.com/docker/distribution/issues/206

Registry V2 es como colocar imágenes en una bolsa negra, espero que recuerde lo que dejó caer y lo que llamó la imagen. Ni siquiera pienses en eliminar una imagen. No quiero romper y reemplazar V2 con V1; a pesar de que V1 funciona y tiene varias herramientas que funcionan con V1, incluida la búsqueda y eliminación. Empecé con el registro V2 del marketing; mejor seguridad y rendimiento

Ubuntu 14.04.3 LTS, registro de CoreOS 723.3.0 github.com/docker/distribution v2.1.1

Escribí un script, llamado view-private-registry para buscar en el registro V2 REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY. Funciona en cualquiera de mis sistemas que tiene el REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY montado. Déjame saber de cualquier cambio que harías, gracias.

Script: https://github.com/BradleyA/Search-docker-registry-v2-script.1.0

#!/bin/bash # %W% %G% %U% # # View private registry, # if REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY is mounted on your system # REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY="/mnt/three/docker-registry/registry-data" # find $REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY -print | / grep ''v2/repositories'' | / grep ''current'' | / grep -v ''link'' | / sed -e ''s///_manifests//tags///:/'' | / sed -e ''s///current//'' | / sed -e ''s/^.*repositories/// /'' | / sort > /tmp/a1 cat /tmp/a1 wc -l /tmp/a1 > /tmp/a2 echo "Number of images: `cat /tmp/a2 | awk {''print $1''}`" echo "Disk space used: `du -hs $REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY`" rm /tmp/a1 /tmp/a2`

Salida:

`$ ./view-private-registry` busybox:latest gcr.io/google_containers/etcd:2.0.9 gcr.io/google_containers/hyperkube:v0.21.2 gcr.io/google_containers/pause:0.8.0 google/cadvisor:latest jenkins:latest logstash:latest mongo:latest nginx:latest python:2.7 redis:latest registry:2.1.1 stackengine/controller:latest tomcat:7 tomcat:latest ubuntu:14.04.2 Number of images: 16 Disk space used: 1.7G /mnt/three/docker-registry/registry-data