Wie suche ich Bilder aus der privaten 1.0-Registrierung im Docker? [geschlossen]

76

Ich habe eine private Registrierung erstellt, Curl xx.xx.xx.xx: 5000 ist in Ordnung. Ich schiebe ein Bild in die private Docker-Registrierung, indem ich Folgendes mache: docker push xx.xx.xx.xx:5000/centos
es gibt zurück:
http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest

Die Frage ist, wie man alle Bilder aus dem Registrierungs-Web erhält oder was auch immer befiehlt. Ich kann keine Informationen aus der Docker-Registrierungs-API finden. hilft jemand? :) :)

edwardsbean
quelle
Ich meine, wie man Bilder aus der privaten Registrierung per Befehlszeile oder http
edwardsbean

Antworten:

71

Ab Version 0.7.0 der privaten Registrierung können Sie Folgendes tun:

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

und Sie erhalten eine json-Nutzlast:

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

Um hier mehr Hintergrundinformationen zu geben, habe ich meine Registrierung gestartet:

docker run \
        -e SETTINGS_FLAVOR=local \
        -e STORAGE_PATH=/registry \
        -e SEARCH_BACKEND=sqlalchemy \
        -e LOGLEVEL=DEBUG \
        -p 5000:5000 \
        registry
faide
quelle
Das ist also eine undokumentierte Funktion fürsearch
Larry Cai
5
siehe Referenz für diese Ausgabe github.com/docker/docker-registry/issues/63 curl -X GET http://localhost:5000/v1/search kann alle Bilder auflisten
Larry Cai
12
Ab API v2 erfolgt dies mit http://localhost:5000/v2/_catalog docs.docker.com/registry/spec/api
mimo
88

Jetzt können Sie vom Docker-Client aus einfach Ihre private Registrierung direkt durchsuchen, ohne die HTTP-APIs oder zusätzliche Tools zu verwenden:

zB Suche nach Centos Bild:

docker search localhost:5000/centos

iTech
quelle
Für die Aufzeichnung funktionierte dies für mich mit Docker Version 1.3.1, Build 4e9bbfa
Marcello Romani
4
Dies sollte unbedingt auf der CLI-Hilfeseite erwähnt werden! docs.docker.com/reference/commandline/cli/#search
Marcello Romani
1
@MarcelloRomani Ich denke, dies ist der richtige Link: docs.docker.com/engine/reference/commandline/search
Hexaholic
71

Ich weiß also, dass sich dieses Feld schnell ändert, aber (Stand: 08.09.2015) habe ich in der Docker Registry HTTP API V2 Folgendes gefunden :

Listing Repositories ( Link )

GET /v2/_catalog

Auflisten von Bild-Tags ( Link )

GET /v2/<name>/tags/list

Basierend darauf hat das Folgende für mich in einer lokalen Registrierung funktioniert (Registrierung: 2 IMAGE ID 1e847b14150e365a95d76a9cc6b71cd67ca89905e3a0400fa44381ecf00890e1 erstellt am 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"]}
snth
quelle
17

Derzeit gibt es keine Suchunterstützung für Docker Registry v2 .

Es gab einen langjährigen Thread zu diesem Thema . Der aktuelle Plan sieht vor, die Suche mit einer Erweiterung am Ende zu unterstützen, die ab Version 2.1 bereit sein sollte .

Als Abhilfe , führen Sie den folgenden auf dem Computer , auf dem Sie Ihre Registrierung v2 ausgeführt wird :

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

Die Bilder befinden sich in Unterverzeichnissen, die ihrem Namespace entsprechen, z jwilder/nginx-proxy

mre
quelle
Wenn der Befehl baser exec -it <Ihr_Registry_Container_ID> bash nicht funktioniert, versuchen Sie Docker exec -it <Ihr_Registry_Container_ID> / bin / sh
KurioZ7
13

Konnte alles in meiner privaten Registrierung zurückbekommen, indem ich nur nach 'Bibliothek' suchte:

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

Rückgabe (zB):

NAME                    DESCRIPTION   STARS     OFFICIAL   AUTOMATED
library/custom-image                  0                    
library/another-image                 0                    
library/hello-world                   0
Matthew Rasmussen
quelle
31
Mit Docker 1.8.1 unter Ubuntu 14.04 bekomme ich Error response from daemon: Unexpected status code 404, was ist los?
Carloreggiani
4
Ich habe das gleiche Problem, der Befehl 'Dockersuche repositroy_ip: 5000 / Busybox' gibt die 404 zurück, aber der vorherige Befehl 'Docker Push Repository_ip: 5000 / Busybox' war erfolgreich
ksopyla
Sie müssen möglicherweise Curl für unsichere Registrierungen verwenden, z. B.curl --insecure -u "test:password" https://myregistrydomain.com:5000/v2/_catalog
Leon Mak
"Wenn Sie Ihre Docker-Registrierung starten, ohne die Suche zu aktivieren, funktioniert diese Benutzeroberfläche nicht und es ist nicht klar, warum. Ich konnte die Registrierung problemlos hinzufügen, da der Docker-Registrierungs-Host: 5000 / v1 / ping HTTP 200 zurückgibt. Wenn Sie jedoch zu den Bildern navigieren, meldet die Benutzeroberfläche, dass die Registrierung nicht erreichbar ist. b / c Docker-Registrierungs-Host: 5000 / v1 / search gibt HTTP 404 zurück. github.com/atcol/docker-registry-ui/issues/…
sm4rk0
6

Listen Sie alle Bilder auf

docker search <registry_host>:<registry_port>/

Listen Sie Bilder wie 'vcs' auf

docker search <registry_host>:<registry_port>/vcs
Smishra
quelle
5

Ich habe das atc- / docker-registry-web-Projekt installiert, das mir die Benutzeroberfläche bietet und nach meiner privaten Registrierung sucht. https://github.com/atc-/docker-registry-web

Es ist dockerisiert und Sie können es einfach ausführen

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

und überprüfen Sie den Inhalt, indem Sie zu navigieren registry_ui_host.name:8080

Larisa Sabban
quelle
2

Derzeit gibt es bei AFAIK keine einfache Möglichkeit, dies zu tun, da diese Informationen nach Index gespeichert werden sollten, über den die private Registrierung nicht verfügt. Abhängig davon, wie Sie die Registrierung gestartet haben, haben Sie zwei Möglichkeiten:

  1. Wenn Sie die Registrierung ohne -v gestartet haben, um Daten in einem separaten Hostordner zu speichern, mit dem Sie dies versuchen können, docker diff <id_of_registry_container>sollten Sie Informationen über Änderungen in Container-Fs erhalten. Alle Push-Images sollten sich irgendwo in / tmp / registry / repositories / befinden.
  2. Wenn Sie die Registrierung mit -v gestartet haben, überprüfen Sie einfach den Inhalt des bereitgestellten Verzeichnisses auf dem Host

Wenn Sie "centos" als Namen verwendet haben, sollte sich dieser in / tmp / registry / repositories / library / centos befinden. Dieser Ordner enthält Textdateien, die die Bildstruktur beschreiben. Die tatsächlichen Daten befinden sich in / tmp / registry / images /.

odk
quelle
Entschuldigung, ich meine, wie man Bilder aus der privaten Registrierung per Befehlszeile oder http
edwardsbean
Ja, ich weiß, aber AFAIK ohne Index können Sie keine Bilder in der privaten Registrierung suchen. Es gibt eine /v1/searchAPI-Methode in der Registrierung, die jedoch ein Index-Backend erfordert. Es gibt eine grundlegende Indeximplementierung im privaten Registrierungscode ( github.com/dotcloud/docker-registry/blob/master/docker_registry/… ), die jedoch nur grundlegende Funktionen im Standalone-Modus bereitstellt. Vor ein paar Tagen habe ich Folgendes gefunden: github.com/ekristen/docker-index, aber ich hatte keine Zeit zum Testen.
Odk
1

Ändern der Antwort von @mre, um die Liste nur mit einem Befehl abzurufen (gültig mindestens für Docker Registry v2).

docker exec -it <your_registry_container_id> ls -a /var/lib/registry/docker/registry/v2/repositories/
user9269906
quelle
Auch zum Auflisten von Tags eines Repositorys: docker exec -it <Ihr_registry_container_id> ls -a / var / lib / registry / docker / registry / v2 / repositories / postgresql / _manifests / tags
Mohsen Abasi
0

Eine andere Methode in einer Zeile (ersetzen Sie bei Bedarf Ihren tatsächlichen Pfad / Ihre Ports).

Beispiel: Angenommen, eine generische Registrierung: 2.0 wird gestartet. Der ausgeführte Registrierungscontainer verfügt über eine Protokolldatei, die Bilder und Tag-Namen enthält. Ich extrapoliere die Daten folgendermaßen:

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

Möglicherweise müssen Sie die Schnittwerte anpassen, um die gewünschte Ausgabe zu erhalten.

Phil Pinkerton
quelle