2014-05-16 6 views
29

Ich kann nicht finden, wie man Bilder in einer privaten Registrierung handhabt. Ich kann ein Bild pushen oder ziehen, weil ich die ID kenne, aber wie bekomme ich die Liste der gedrückten Bilder?Jedes API- oder Web-UI-Projekt zum Verwalten einer privaten Docker-Registrierung?

Nehmen Sie zum Beispiel eine Person, die die verfügbaren Bilder im privaten Register seiner Organisation sehen möchte. Wie kann sie tun?

Wenn ich mich nicht irre, kann ich API oder Web-UI nicht finden, um den Registrierungsinhalt wie die index.docker.io mit der öffentlichen Registrierung zu entdecken.

Gibt es Open-Source-Projekte, um dies zu verwalten?

danke.

+6

Ich habe zu diesem Zweck einen erstellt einen FOSS web-app gerade: http://github.com/atc-/docker-registry-web; oder 'docker run -p 8080: 8080 atcol/docker-registry-web'; ermöglicht das Suchen, Löschen, Auflisten usw. für eine oder mehrere Registries –

+1

auf der Registry v2 http: // mypvtregistry: 5000/v2/_catalog würde alle verfügbaren Bilder zurückgeben. – Charith

Antwort

12

Danke Thomas!

Um die Verwendung der Suche API zu ermöglichen, müssen Sie den Container starten, indem Sie den Wert der Umgebungsvariablen SEARCH_BACKEND wie folgt spezifiziert:

docker run -d -e SEARCH_BACKEND=sqlalchemy -p 5000:5000 --name registry samalba/docker-registry 

Dann i für diese Abfrage ein Ergebnis haben:

GET http://registry_host:5000/v1/search?q=base 

Result : 
{ 
    "num_results": 1, 
    "query": "base", 
    "results": [{"description": "", "name": "test/base-img"}] 
} 

um alle Bilder auflistet, können Sie dies tun:

GET http://registry_host:5000/v1/search 

Result : 
{ 
    "num_results": 2, 
    "query": "", 
    "results": [ 
     {"description": "", "name": "test/base-img"}, 
     {"description": "", "name": "test/base-test"}] 
} 

Und kn ow die verfügbaren Versionen eines Bildes:

GET http://localhost:5000/v1/repositories/**test/base-img**/tags 

Result : 
{ 
    "0.1": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13", 
    "0.2": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13", 
    "0.3": "04e073e1efd31f50011dcde9b9f4d3148ecc4da94c0b7ba9abfadef5a8522d13" 
} 
+0

In der Tat!Ich dachte, du musst eine Datenbank oder ähnliches einrichten, aber das war wirklich einfach! Danke dir auch. :) –

+0

Als Referenz: Docker Registry UI unterstützt nicht V2. –

1

Soweit ich sehe, hat die Docker Registrierung eine REST API, sehr ähnlich wie Docker selbst. Sie finden die Dokumentation unter http://docs.docker.io/reference/api/registry_api/. Aber auf den ersten Blick sehe ich keine Methode, um nur alle Bilder aufzulisten.

Es gibt auch eine REST API für den offiziellen Index (Infos unter http://docs.docker.io/reference/api/docker-io_api/).

EDIT

ich getestet nur die Registrierung API Docker und es ist nicht so selbsterklärend. Sie können alle Bilder eines bestimmten Repositorys abfragen. In meinem Fall heißt mein Repository "thomas/busybox". Ich kann alle Bilder dort Abfrage durch den Aufruf:

https://my-private-registry.com/v1/repositories/thomas/busybox/images 

Result: 

[ 
    { 
    "id": "2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739" 
    }, 
    { 
    "id": "6c991eb934609424f761d3d0a7c79f4f72b76db286aa02e617659ac116aa7758" 
    }, 
    { 
    "id": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a" 
    }, 
    { 
    "id": "511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158" 
    } 
] 

Jetzt weiß ich, dass ich vier Bilder in meinem Repository und ich kann jedes Bild abfragen. Die Abfrage für das erste Bild wäre:

https://my-private-registry.com/v1/images/2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739/json 

Result: 

{ 
    "id": "2d8e5b282c81244037eb15b2068e1c46319c1a42b80493acb128da24b2090739", 
    "parent": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a", 
    "created": "2014-04-24T15:59:59.47081913Z", 
    "container": "d15320d6935ca35bc4198e373f29e730f4c53cce32b3809c2fecec22eb30018b", 
    "container_config": { 
    "Hostname": "4964db5b599b", 
    ... 
    "Tty": false, 
    "OpenStdin": false, 
    "StdinOnce": false, 
    "Env": [ 
     "HOME=\/", 
     "PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin" 
    ], 
    "Cmd": [ 
     "\/bin\/sh", 
     "-c", 
     "#(nop) CMD [\/bin\/sh -c \/bin\/sh]" 
    ], 
    "Image": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a", 
    ... 
    "OnBuild": [ 

    ] 
    }, 
    "docker_version": "0.10.0", 
    "author": "J\u00c3\u00a9r\u00c3\u00b4me Petazzoni <[email protected]>", 
    "config": { 
    "Hostname": "4964db5b599b", 
    "Domainname": "", 
    "User": "", 
    "Memory": 0, 
    ... 
    "Env": [ 
     "HOME=\/", 
     "PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin" 
    ], 
    "Cmd": [ 
     "\/bin\/sh", 
     "-c", 
     "\/bin\/sh" 
    ], 
    "Image": "9f4e93171ec525221fa9013d0e21f8690cef68590664eb5249e0b324c5faf31a", 
    ... 
    "OnBuild": [ 

    ] 
    }, 
    "architecture": "amd64", 
    "os": "linux", 
    "Size": 0 
} 

Sie können auch nach einem Bild suchen, aber ich bekomme keine Ergebnisse:

https://my-private-registry.com/v1/search?q=thomas 

Result: 

{"num_results": 0, "query": "thomas", "results": []} 
+0

Ich habe diese API versucht. Was fehlt, ist die Liste der verfügbaren Repositories und der Such-API. Ich bin überrascht, dass die API in der privaten Registry nicht weiter fortgeschritten ist. – bwilcox

+1

Ich denke, die Such-API sollte funktionieren, wenn Sie den Suchindex für Ihre private API aktivieren (was ich in meinem obigen Beispiel noch nicht getan habe). Siehe die Beispielkonfiguration unter https://github.com/dotcloud/docker-registry/blob/master/config/config_sample.yml –

+0

Die Links sind Broken – deFreitas

15

Gibt es Open-Source-Projekte, dies zu verwalten?

Es gibt eine containerisierte Webanwendung, die die Verwaltung von One-to-Many-Privatregistrys ermöglicht. Sein Name ist Docker Registry UI und es ist FOSS.

Die source is on Github und man kann es in einem Behälter läuft wie folgt:

docker run -p 8080:8080 -v my_data_dir:/var/lib/h2/ atcol/docker-registry-ui

Haftungsausschluss: Ich schrieb den Web-App, da ich nicht ein, mich finden konnte. Ich glaube, das beantwortet deine Frage (wie zitiert).

+2

Großartig! Ich sehe mir deine App an. Vielen Dank. – bwilcox

+0

Wie müssen Sie es für eine Secure Docker Registrierung verwenden (mit selbstsignierten Zertifikaten?) –

+0

Das ist eine separate Frage :) Es gibt jedoch HTTPs Unterstützung. –

11

Ich habe eine docker-registry-frontend geschrieben, die Sie auf GitHub finden können. Es ermöglicht Ihnen, Ihre private Registrierung zu durchsuchen und fast alles zu tun, was über die Docker Registry API v1 verfügbar ist. Außerdem kann es als eigenständiger Andock-Container ausgeführt werden.

Hier ist eine Liste der grundlegenden Funktionen mit einigen Screenshots: https://github.com/kwk/docker-registry-frontend/wiki/Features. Zusätzlich zu diesen Funktionen wird SSL-Verschlüsselung und Kerberos-Authentifizierung unterstützt.

+0

Kennen Sie http://github.com/atc-/docker-registry-web –

3

ich für Sie präsentieren wollen, meine frontend for private registry, können Sie es von Github oder dockerhub versuchen können. Dort finden Sie auch Schnittstellen Screenshots.

Zusammengefasst hat:
- intern db (BoltBD) gibt es Möglichkeit, Informationen zu speichern, und es Antworten viel mehr als Folge schneller als nach wie Call direkte api in anderen Projekten
- App kann pars, speichern und zeigen Informationen aus der Registry wie:
- Bildebenen Info:
- Name/Tag
- Bildgröße und schiebt Anzahl
- laden und drücken Daten
- Bild erzeugt Befehle Geschichte
- es ist möglich, Legen Sie mehrere Reposito ries haben, falls Sie mehr als ein Register und beobachten sie in einem Ort
- Statistiken hübsch, zeichnen Kurven für Uploads Nummer und Bildgrößen für Tag mit Hinsicht

Daten

aktualisieren 2017.02.15
Bisher wurde auch zugegeben:

  • ein Elternteil
  • zeigen Baum-Diagramm der Eltern finden
  • Bild Löschen
  • Bearer Token Auth Unterstützung
+0

Dieses Frontend ist großartig, leicht und funktioniert sehr gut. Zu guter Letzt, wenn Sie das Bild aus dem Frontend löschen, würde das Docker-Register v2 api _catalog immer noch den gelöschten Image-Namen zurückgeben, da Delete das Tag, aber nicht die eigentlichen Payloads entfernt. Dachte das Frontend funktioniert zunächst nicht, es dauerte mich irgendwann, um es herauszufinden, können Sie detailliertere Diskussion auf https://github.com/docker/docker-registry/issues/988 sehen. – David

+0

@David Vielen Dank, es ist eine Freude zu lesen, dass das Personal hilfreich ist! Und vielen Dank für die Informationen über Löschung Glitch. Ich werde diese Informationen bei der nächsten Reparatur oder Aktualisierung zur Readme hinzufügen. Sie haben Recht, es gibt im Moment eine ganze Reihe von Problemen mit dem Löschen, die durch das Caching-System der Registrierung verursacht werden. Der Grund dafür ist der selbe wie der in bow readme in [Punkt 3 des Löschbereichs] (https://github.com/Evedel/bow#image-deletion) beschriebene, also warte ich immer noch auf das Registry-Problem geschlossen. – Evedel

Verwandte Themen