2014-05-19 19 views
64

Ho creato un registro privato, curl xx.xx.xx.xx: 5000 è ok. Spingo un'immagine in finestra mobile registro privato facendo: docker push xx.xx.xx.xx:5000/centos
è tornare:
http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latestCome cercare immagini dal registro 1.0 privato nella finestra mobile?

la questione è come ottenere tutte le immagini dal web Registro di sistema o comando di qualsiasi altra cosa. Non riesco a trovare alcuna informazione dalla API del registro docker. qualcuno aiuta? :)

+0

voglio dire come cercare le immagini da registro privato tramite riga di comando o http – edwardsbean

risposta

66

partire v 0.7.0 del privato registry si può fare:

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

e si otterrà un carico utile JSON:

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

che invia più di fondo ecco come ho iniziato la mia registro di sistema:

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

quindi questa è la funzione non documentata per 'search' –

+4

vedi riferimento per questo problema https://github.com/docker/docker-registry/issues/63' curl -X GET http: // localhost: 5000/v1/search' può elencare tutte le immagini –

+8

A partire da api v2 è fatto con 'http: // localhost: 5000/v2/_catalog' https: //docs.docker. com/registry/spec/api/ – mimo

3

Attualmente AFAIK non esiste un modo semplice per eseguire questa operazione poiché tali informazioni devono essere memorizzate in base all'indice del registro privato. Ma a seconda di come hai iniziato registro hai 2 opzioni:

  1. se hai iniziato Registro di sistema senza -v per memorizzare i dati nella cartella host separato si può provare con docker diff <id_of_registry_container> con questo si dovrebbe ottenere informazioni sui cambiamenti in un contenitore fs. Tutte le immagini spinte devono essere da qualche parte in/tmp/registrazione/repository/
  2. se hai iniziato Registro con -v basta controllare il contenuto della directory montata su un host

Se è stato utilizzato "CentOS" il nome dovrebbe essere in/tmp/registro/repository/library/CentOS. Questa cartella conterrà file di testo che descrivono la struttura dell'immagine. I dati effettivi sono in/tmp/registry/images /.

+0

scusate, voglio dire come cercare immagini dal registro privato tramite riga di comando o http – edwardsbean

+0

Sì, lo so, ma AFAIK senza indice non è possibile cercare immagini nel registro privato. Esiste il metodo API/v1/search' nel registro ma richiede il backend dell'indice. Esiste un'implementazione di base dell'indice nel codice di registro privato (https://github.com/dotcloud/docker-registry/blob/master/docker_registry/index.py), ma è solo per fornire funzioni di base in modalità standalone. Pochi giorni fa ho trovato questo: https://github.com/ekristen/docker-index ma non ho avuto il tempo di testare. – odk

+0

grazie, proverò: github.com/ekristen/docker-index – edwardsbean

5

ho installato il progetto atc-/finestra mobile-registro-web che mi dà UI e ricerca fo r il mio registro privato. https://github.com/atc-/docker-registry-web

Si dockerised e si può solo eseguirlo

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

e rivedere contenuti si naviga a registry_ui_host.name:8080

77

Ora dal client finestra mobile si può semplicemente cercare il registro privato direttamente senza utilizzare il protocollo HTTP API o altri strumenti aggiuntivi:

es. immagine Cercando CentOS per:

docker search localhost:5000/centos

+0

Per la cronaca, questo ha funzionato per me usando Docker versione 1.3.1, build 4e9bbfa –

+3

Questo dovrebbe essere sicuramente menzionato sulla pagina di aiuto cli! https: //docs.docker.com/reference/commandline/cli/# search –

+1

@MarcelloRomani Penso che questo sia il link corretto: https://docs.docker.com/engine/reference/commandline/search/ – Hexaholic

13

è stato in grado di ottenere tutto nel mio registro privato indietro di ricerca solo per 'biblioteca':

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

Returns (ad esempio):

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

Con la finestra mobile 1.8.1 su Ubuntu 14.04 ricevo 'Risposta errore da demone: codice di stato inaspettato 404', cosa c'è che non va? – carloreggiani

+4

Ho lo stesso problema il comando 'docker search repositroy_ip: 5000/busybox' restituisce il 404, ma il comando precedente 'docker push repository_ip: 5000/busybox' è riuscito – ksopyla

15

Attualmente c'è il nessun supporto di ricerca per Docker Registry v2.

C'è stato un long-running thread on the topic. Il piano attuale è di supportare la ricerca con un extension alla fine, che dovrebbe essere ready by v2.1.

Come soluzione, eseguire il seguente sulla macchina in cui il vostro v2 registro è in esecuzione:

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

Le immagini sono in sottodirectory corrispondente al loro spazio dei nomi, ad esempio, jwilder/nginx-proxy

0

Un altro metodo una riga (sostituire il percorso/le porte effettive se necessario). Esempio: presuppone un registro generico: avvio 2.0 Il contenitore del registro di esecuzione ha un file di registro che contiene nomi di immagini e tag. Estrapolo i dati in questo modo:

grep -r -o "vars.name =. * Vars.reference =. "/var/lib/finestra mobile/contenitori/ | cut -c 167-225 | sed 's/ver. * $ //' | sed 's/vars.name = //' | sed 's/vars.reference = /: /' | sort -u

potrebbe essere necessario modificare i valori di taglio per ottenere l'output desiderato.

56

Quindi so che questo è un campo in rapida evoluzione, ma (come del 2015/09/08) ho trovato quanto segue nella Docker Registry HTTP API V2:

Repositories Listing (link)

GET /v2/_catalog 

Listing tag immagine (link)

GET /v2/<name>/tags/list 

basato su quello i seguenti ha lavorato per me su un registro locale (registro di sistema: ID 1e847b14150e365a95d76a9c 2 IMMAGINE c6b71cd67ca89905e3a0400fa44381ecf00890e1 creato su 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"]} 
+0

funziona con docker v2 +, perfetto – Hoto

3

lista tutte le immagini

docker search <registry_host>:<registry_port>/ 

immagini lista come 'VCS'

docker search <registry_host>:<registry_port>/vcs 
Problemi correlati