如何获取位于私有registry中的Docker映像标签的状态

有没有办法通过API或CLI获取位于私有存储库中的Docker镜像的状态?

用例:

我正在试图推动一个特定的标记到一个私人的registry的Docker图像。 推后,我需要知道它是否真的被推或不。 如果我传递“图像名称”和“图像标签”,我需要知道该图像的状态。

我在Docker API文档中search了很多,但找不到任何解决scheme。

docker push registry/repo:tag是相当不错的确认。 如果你想用clivalidation,只需再次docker pull registry/repo:tag图像docker pull registry/repo:tag

在V2 Registry API中,您可以检索存储库标记的清单

 GET /v2/<repo>/manifests/<tag> 

所以

 $ docker pull busybox:latest $ docker tag busybox:latest localhost:5000/busybox:latest $ docker push 10.8.8.8:5000/busybox:latest The push refers to a repository [localhost:5000/busybox] c0de73ac9968: Pushed latest: digest: sha256:68effe31a4ae8312e47f54bec52d1fc925908009ce7e6f734e1b54a4169081c5 size: 527 $ curl -si http://localhost:5000/v2/busybox/manifests/latest 

哪个返回

 HTTP/1.1 200 OK Content-Length: 2735 Content-Type: application/vnd.docker.distribution.manifest.v1+prettyjws Docker-Content-Digest: sha256:45ed6b2591c5e9be6df88febcef2fb613d45eea5883a1cc80fecde4c6c3c2c11 Docker-Distribution-Api-Version: registry/2.0 Etag: "sha256:45ed6b2591c5e9be6df88febcef2fb613d45eea5883a1cc80fecde4c6c3c2c11" X-Content-Type-Options: nosniff Date: Mon, 13 Mar 2017 04:16:00 GMT { "schemaVersion": 1, "name": "busybox", "tag": "latest", "architecture": "amd64", "fsLayers": [ { "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4" }, { "blobSum": "sha256:04176c8b224aa0eb9942af765f66dae866f436e75acef028fe44b8a98e045515" } ], "history": [ { "v1Compatibility": "{\"architecture\":\"amd64\",\"config\":{\"Hostname\":\"1295ff10ed92\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"sh\"],\"Image\":\"sha256:0d7e86beb406ca2ff3418fa5db5e25dd6f60fe7265d68a9a141a2aed005b1ae7\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"container\":\"d12e9fb4928df60ac71b4b47d56b9b6aec383cccceb3b9275029959403ab4f73\",\"container_config\":{\"Hostname\":\"1295ff10ed92\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) \",\"CMD [\\\"sh\\\"]\"],\"Image\":\"sha256:0d7e86beb406ca2ff3418fa5db5e25dd6f60fe7265d68a9a141a2aed005b1ae7\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"created\":\"2017-03-09T18:28:04.586987216Z\",\"docker_version\":\"1.12.6\",\"id\":\"21bd05c98a33998aba2cea975e0fcdc4c8b051070b70ed36f28c0bc55bcdacb6\",\"os\":\"linux\",\"parent\":\"86549330fef190e649817430dfaba05934d46b450fe2004cc1e2afc36587054c\",\"throwaway\":true}" }, { "v1Compatibility": "{\"id\":\"86549330fef190e649817430dfaba05934d46b450fe2004cc1e2afc36587054c\",\"created\":\"2017-03-09T18:28:03.975884948Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) ADD file:c9ecd8ff00c653fb652ad5a0a9215e1f467f0cd9933653b8a2e5e475b68597ab in / \"]}}" } ], "signatures": [ { "header": { "jwk": { "crv": "P-256", "kid": "VQYK:XW62:J7X2:AQVH:VHUG:RXKT:QI6P:KERD:5IXL:4A6V:2JAT:46HP", "kty": "EC", "x": "gKuod_XxG1k5NYCD3BLrYZTDNfD2o19UrihkP7hKBhU", "y": "lkrBDaDkjdFGJE2cmhQCFNyeUeczAegPBeseor3Kz3I" }, "alg": "ES256" }, "signature": "2Z33_qBoBFeS7Pvash6Mh3yUq2bXfbHUO3SXG4QA6GFXoJ2kVAhoXr8v4kGpjVC2CcRVsYcP1duv9Yjc8bSLog", "protected": "eyJmb3JtYXRMZW5ndGgiOjIwODgsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAxNy0wMy0xM1QwNDoxNjowMFoifQ" } ] } 

V2registry使用不同的存储格式,这也意味着不同的摘要校验和。 您可能需要在history数组中查找v1Compatibility来将本地V1映像清单( docker inspect local/image:tag )的详细信息与远程V2存储相匹配。