Ich verwende die Docker-Registrierung v1 und bin an einer Migration auf die neuere Version v2 interessiert. Aber ich brauche eine Möglichkeit, um eine Liste der Bilder zu erhalten, die in der Registrierung vorhanden sind. Zum Beispiel kann ich mit Registry v1 eine GET-Anfrage an ausführen http://myregistry:5000/v1/search?
und das Ergebnis ist:
{
"num_results": 2,
"query": "",
"results": [
{
"description": "",
"name": "deis/router"
},
{
"description": "",
"name": "deis/database"
}
]
}
Aber ich kann in der offiziellen Dokumentation nichts Ähnliches finden, um eine Liste der Bilder in der Registrierung zu erhalten. Kennt jemand einen Weg, dies in der neuen Version v2 zu tun?
docker
docker-registry
Kikicarbonell
quelle
quelle
Antworten:
Für die neueste Version (Stand: 31.07.2015) von Registry V2 erhalten Sie dieses Bild von DockerHub:
Listen Sie alle Repositorys (effektiv Bilder) auf:
Listen Sie alle Tags für ein Repository auf:
quelle
http://<registry-url>/v2/_catalog?n=<count>
curl -u <user>:<pass> -X GET ...
Sie können weiter suchen
quelle
Kataloge abrufen
Standardmäßig gibt die Registrierungs-API 100 Katalogeinträge zurück Code :
Wenn Sie die Registrierungs-API einrollen:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
es entspricht :
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=100
Dies ist eine Paginierungsmethode.
Wenn die Summe der Einträge über 100 liegt, haben Sie zwei Möglichkeiten:
Erstens : Geben Sie eine größere Zahl an
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=2000
Sencond : Analysiere die nächste Linker-URL
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
Ein im Antwortheader enthaltenes Verknüpfungselement:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
Antwortheader:
Link: </v2/_catalog?last=pro-octopus-ws&n=100>; rel="next"
Das Link-Element hat den letzten Eintrag dieser Anfrage, dann können Sie die nächste 'Seite' anfordern:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?last=pro-octopus-ws
Wenn die Antwort - Header enthält Link - Element, können Sie es in einer do - Schleife .
Holen Sie sich Bilder
Wenn Sie das Ergebnis des Katalogs erhalten, sieht es wie folgt aus:
{ "repositories": [ "busybox", "ceph/mds" ] }
Sie können die Bilder in jedem Katalog erhalten:
curl --cacert domain.crt https://your.registry:5000/v2/busybox/tags/list
kehrt zurück:
{"name":"busybox","tags":["latest"]}
quelle
ceph/mds
? im Allgemeinen für jedes Repository definiert mit/
-/v2/_catalog/ceph/mdt/tags/list
funktioniert nichtDie neueste Version der Docker-Registrierung, die unter https://github.com/docker/distribution verfügbar ist, unterstützt die Katalog-API. (v2 / _katalog). Dies ermöglicht die Suche nach Repositorys
Bei Interesse können Sie die von mir erstellte Docker-Image-Registrierungs-CLI ausprobieren, um die Verwendung der Suchfunktionen in der neuen Docker-Registrierungsdistribution ( https://github.com/vivekjuneja/docker_registry_cli ) zu vereinfachen.
quelle
Zu diesem Zweck haben wir ein CLI-Tool geschrieben: docker-ls Es ermöglicht Ihnen das Durchsuchen einer Docker-Registrierung und unterstützt die Authentifizierung über Token oder Basisauthentifizierung.
quelle
Das hat mich verrückt gemacht, aber ich habe endlich alle Teile zusammengefügt. Ab dem 25.01.2015 habe ich bestätigt, dass es möglich ist, die Bilder in der Docker V2-Registrierung aufzulisten (genau wie oben erwähnt @jonatan).
Ich würde diese Antwort abstimmen, wenn ich den Repräsentanten dafür hätte.
Stattdessen werde ich die Antwort erweitern. Da die Registrierung V2 aus Sicherheitsgründen erstellt wird, ist es meiner Meinung nach angebracht, anzugeben , wie sie mit einem selbstsignierten Zertifikat eingerichtet und der Container mit diesem Zertifikat ausgeführt wird ein https-Aufruf an sie erfolgen kann:
Dies ist das Skript, mit dem ich die Registrierung tatsächlich starte:
Dies mag für manche offensichtlich sein, aber ich bin immer mit Schlüsseln und Zertifikaten verwechselt. Die Datei, auf die verwiesen werden muss, damit der Aufruf @jonaton oben erwähnt wird **, ist die oben aufgeführte domain.crt. (Seit ich domain.crt eingegeben habe
/root
, habe ich eine Kopie in das Benutzerverzeichnis erstellt, auf das zugegriffen werden kann.)** Der obige Befehl wurde geändert: -X GET hat nicht wirklich funktioniert, als ich es ausprobiert habe.
Hinweis:
https://myregistry:5000
(wie oben) muss mit der Domäne übereinstimmen, die dem generierten Zertifikat zugewiesen wurde.quelle
Installieren Sie die Registrierung: 2.1.1 oder höher (Sie können die letzte hier überprüfen ) und verwenden Sie GET / v2 / _catalog, um die Liste abzurufen.
https://github.com/docker/distribution/blob/master/docs/spec/api.md#listing-repositories
Liste aller Bilder nach Shell-Skript Beispiel: https://gist.github.com/OndrejP/a2386d08e5308b0776c0
quelle
Hier ist ein netter kleiner Liner (verwendet JQ), um eine Liste von Repos und zugehörigen Tags auszudrucken.
Wenn Sie nicht
jq
installiert haben, können Sie verwenden:brew install jq
quelle
Ich musste hier dasselbe tun und die oben genannten Arbeiten, außer dass ich Anmeldedaten angeben musste, da es sich um ein lokales Docker-Repository handelte.
Es ist wie oben beschrieben, jedoch mit Angabe des Benutzernamens / Passworts in der URL.
Es kommt als unformatierter JSON zurück.
Ich habe es zur Erleichterung des menschlichen Lesens durch den Python-Formatierer geleitet, falls Sie es in diesem Format haben möchten.
quelle
Mit den Endpunkten "/ v2 / _catalog" und "/ tags / list" können Sie nicht wirklich alle Bilder auflisten. Wenn Sie ein paar verschiedene Bilder gepusht und mit "Neueste" markiert haben, können Sie die alten Bilder nicht wirklich auflisten! Sie können sie weiterhin abrufen, wenn Sie mit dem Digest "docker pull ubuntu @ sha256: ac13c5d2 ..." auf sie verweisen. Die Antwort lautet also: Es gibt keine Möglichkeit, Bilder aufzulisten. Sie können nur Tags auflisten, die nicht identisch sind
quelle
Wenn einige so weit kommen.
Nehmen Sie, was andere oben bereits gesagt haben. Hier ist ein Einzeiler, der die Antwort in eine mit json formatierte Textdatei legt.
Das sieht so aus
Möglicherweise müssen Sie `? N = xxxx 'ändern, um der Anzahl der Container zu entsprechen, über die Sie verfügen.
Als nächstes können Sie alte und nicht verwendete Container automatisch entfernen.
quelle
Die Funktionalität von Docker Search Registry v2 wird derzeit zum Zeitpunkt dieses Schreibens nicht unterstützt. Siehe Diskussion seit Februar 2015: "Registrierungssuchfunktion # 206 vorschlagen" https://github.com/docker/distribution/issues/206
Ich habe ein Skript geschrieben, das Sie finden können: https://github.com/BradleyA/Search-docker-registry-v2-script.1.0 Es ist nicht schön, aber es erhält die benötigten Informationen aus der privaten Registrierung.
quelle
Ich habe ein benutzerfreundliches Kommandozeilen-Tool geschrieben mit dem Bilder auf verschiedene Arten aufgelistet werden können (z. B. alle Bilder auflisten, alle Tags dieser Bilder auflisten, alle Ebenen dieser Tags auflisten).
Sie können auch nicht verwendete Bilder auf verschiedene Arten löschen, z. B. nur ältere Tags eines einzelnen Bildes oder aus allen Bildern usw. löschen. Dies ist praktisch, wenn Sie Ihre Registrierung von einem CI-Server aus füllen und nur die neuesten / stabilen Versionen behalten möchten.
Es ist in Python geschrieben und erfordert nicht das Herunterladen umfangreicher großer benutzerdefinierter Registrierungsbilder.
quelle
Hier ist ein Beispiel, in dem alle Tags aller Bilder in der Registrierung aufgelistet sind. Es verarbeitet auch eine Registrierung, die für die HTTP Basic-Authentifizierung konfiguriert ist.
Erläuterung:
quelle
Dieser Thread stammt aus einer langen Zeit, die aktuellsten Tools, die man berücksichtigen sollte, sind
skopeo
undcrane
.skopeo
unterstützt das Signieren und hat viele andere Funktionen,crane
ist jedoch etwas minimalistischer und ich fand es einfacher, sie in ein einfaches Shell-Skript zu integrieren.quelle
Da jede Registrierung als Container ausgeführt wird, ist der Container-ID eine Protokolldatei ID-json.log zugeordnet. Diese Protokolldatei enthält die Variablen vars.name = [image] und vars.reference = [tag]. Ein Skript kann verwendet werden, um diese zu extrapolieren und zu drucken. Dies ist möglicherweise eine Methode zum Auflisten von Bildern, die in die Registrierung V2-2.0.1 verschoben wurden.
quelle