2016-02-03 4 views
6

Nach https://docs.docker.com/registry/spec/api/ kann ich /v2/<name>/tags/list aufrufen, um eine Liste der Tags für ein bestimmtes Bild zu erhalten. Es funktioniert gut, z. B .:Wie lautet der API-Endpunkt der Docker-Registry v2, um den Digest für ein Image zu erhalten?

{"name"=>"avi/test", "tags"=>["latest"]} 

Allerdings möchte ich die Digest für jedes Tag. Ja, der "Digest" ist eigentlich der Hash des Manifests (zumindest wie ich es am besten aus der API verstehe; nicht 100% klar). Allerdings möchte ich wissen, was eine eindeutige Kennung für "neueste" (und jedes andere Tag) ist.

Anwendungsfall: Ich hätte jemand eine Version als letzten Tag, und will, dass der tit zu prüfen, auf dem neuesten Stand ist:

docker push avi/test:2.6 
docker tag avi/test:2.6 avi/test:latest 
docker push avi/test:latest 
# build 2.7 
docker push avi/test:2.7 
# oops! Forgot to tag latest to 2.7 

Im obigen Fall, wenn ich nicht nur die Tags überprüfen - die wird mir "2.6", "2.7", "neueste" - aber auch die Digest (zumindest der Manifest), kann ich finden, was verschiedene Tags zeigen, Audit, etc.

Antwort

6

AFAIK, gibt es nicht eine Digest-API. Jedoch, gemäß der v2 API spec können Sie eine HEAD oder GET Anfrage gegen /v2/<name>/manifests/<reference> tun. Die Antwort enthält einen Docker-Content-Digest Header, der den Digest des angegebenen Manifests enthält (z. B. latest).

+0

Ohhh, das habe ich in der Spezifikation verpasst. Also wenn ich 'HEAD/v2/avi/test/manifesten/neuste 'oder' HEAD/v2/avi/test/manifesten/2.7' tue, sollte die Kopfzeile für 'Docker-Content-Digest' eindeutig sein, damit ich Versionen vergleichen kann ? – deitch

+0

Ja, der 'Docker-Content-Digest'-Header sollte Ihnen geben, was Sie brauchen. –

+0

Danke, Ryan, sehr geschätzt. Ich habe eine einfache Registrierung: 2 Ruby Juwel, die eine Suche macht, bekommt Tags und jetzt können Hashes zu vergleichen. Perfekt. https://github.com/deitch/docker_registry2 – deitch

Verwandte Themen