wake-up-neo.com

Docker Registry 2.0 API v2

Ich zog und richtete die lokale Docker-Registrierung ein: 2.0

Ich habe versucht, ein Bild erfolgreich zu verschieben, aber wenn ich versuche, nach einem Bild zu suchen, bekomme ich 404:

[email protected]:~# 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

Wenn ich versuche, localhost: 5000 zu kräuseln, bekomme ich nur eine 404:

404 page not found
20
alexfvolk

[~ # ~] Update [~ # ~] (14. April 2016): Immer noch nicht hier in der Verteilungs-Roadmap , aber hier ist ein spezielles Problem bei der Suche .

[~ # ~] Update [~ # ~] (12. November 2015): Die API-Endpunkte sind noch nicht vorhanden und befinden sich noch nicht im Docker Registrierungs-Roadmap.

Das Problem hierbei ist, dass die neue v2 Docker-Registrierung diesen bestimmten Endpunkt noch nicht bei dieser Frage und Antwort nicht unterstützt. Sie können die Quelle selbst für die Routenendpunkte überprüfen, und Sie werden feststellen, dass die meisten API-Endpunkte einfache Vorgänge wie das Hochladen und Kennzeichnen, aber noch keine Implementierung des Suchendpunkts beinhalten. Hierbei ist zu beachten, dass es sich bei der v2-Registrierung um ein vollständig anderes Projekt handelt als bei der v1-Registrierung. Es ist sogar in einer völlig anderen Sprache geschrieben (v1 war ein Python) -Projekt, während v2 Go verwendet, was mehr mit den übrigen Docker-Projekten übereinstimmt.) Ich habe einige Zeit gebraucht und es ernst genommen Lesen Sie, um die Dichotomie zwischen den Registern zu verstehen. Es lohnt sich, in dieser speziellen Github-Ausgabe über die v2-Registrierung nachzusehen, um einen tiefen Einblick in die jüngste Diskussion über den Status der v2-Registrierung zu erhalten eine Diskussion darüber, wohin sie es gebracht haben.

Es gibt also noch keinen Suchendpunkt in der v2-Registrierung. Sie können Ihr Bild nach Tag oder nach dem Bildnamen selbst auflisten, wie in Aufgabe 8 in dieser Dokumentation angegeben.

32
L0j1k

wenn Sie sich unter Windows befinden, können Sie hier ein Powershell-Skript verwenden, um den v2/_catalog von Windows mit der grundlegenden HTTP-Authentifizierung abzufragen.

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

Zu Ihrer Information müssen Sie docker pull distribution/registry:master anstelle von docker pull registry:2 verwenden. Die registry:2-Image-Version ist derzeit 2.0.1, die nicht mit dem Katalogendpunkt geliefert wird.

3
Vincent De Smet

Ich denke, der einfachste Weg, um zu überprüfen, ob ein Docker-Image vorhanden ist, ist die Verwendung des Docker V2 REST -API Tags -Listenservice

Beispiel:- 

curl $CURLOPTS -H "Authorization: Bearer $token" "https://hub.docker.com:4443/v2/your-repo-name/tags/list"

wenn das obige Ergebnis 200Ok mit einer Liste von Bild-Tags zurückgibt, wissen wir, dass ein Bild vorhanden ist

{"name":"your-repo-name","tags":["1.0.0.1533677221","1.0.0.1533740305","1.0.0.1535659921","1.0.0.1535665433","latest"]}

sonst, wenn Sie so etwas sehen 

{"errors":[{"code":"NAME_UNKNOWN","message":"repository name not known to registry","detail":{"name":"your-repo-name"}}]} 

dann wissen Sie mit Sicherheit, dass das Bild nicht existiert.

1
Abhishek J

Heute habe ich das registry:master-Bild ausprobiert, existiert aber nicht.

[email protected]:~$ 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
[email protected]:~$ 

Jetzt können Sie den registry:2 ausführen und haben den Endpunkt.

Wenn ich http://localhost:5000/v2/_catalog in meiner Maschine besuche, kann ich diese Ausgabe {"repositories":["ubuntu"]} sehen, die korrekt ist. Auch probierte http://localhost:5000/v2/ubuntu/tags/list und bekam diese Antwort {"name":"ubuntu","tags":["latest"]}, damit es funktioniert.

Sie können einen Blick auf die Dokumente werfen.

0
Xotl

Die Docker-Registrierungssuchfunktion v2 wird zum Zeitpunkt dieses Schreibens nicht unterstützt. Siehe Diskussion seit Feb 2015: https://github.com/docker/distribution/issues/206

Registry V2 ist wie das Ablegen von Bildern in eine schwarze Tasche. Ich hoffe, Sie erinnern sich daran, was Sie hineingelegt haben und wie Sie das Bild genannt haben. Denken Sie nicht einmal daran, ein Bild zu löschen. Ich möchte nicht V2 mit V1 rippen und ersetzen; Obwohl V1 funktioniert und über mehrere Tools verfügt, die mit V1 funktionieren, einschließlich Suchen und Löschen. Ich habe mit Registry V2 vom Marketing angefangen; bessere Sicherheit und Leistung.

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

Ich habe ein Skript namens view-private-registry geschrieben, um die Registry V2 REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY zu durchsuchen. Es funktioniert auf allen meinen Systemen, an denen der REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY angehängt ist. Teilen Sie mir bitte Ihre Änderungen mit, danke.

Skript: 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`

Ausgabe:

`$ ./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
0
Bradley Allen

Unter Linux (Centos 7) verwende ich dies, solange das Registry-Image der einzige Container ist, der ausgeführt wird: Dies listet alle Images auf, die auf den Resistry/Container geschoben wurden Was ich als Länge der Bildnamen wollte, variiert etwas. als Sudo "script-name.sh" ausführen

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
0
Phil Pinkerton
@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"}}]}
0
user5443485