當圖像被推送到註冊表V2時,圖像ID是否會被推送到註冊表中?是否有可能從V2註冊表獲取特定存儲庫的圖像ID?可以從Docker Registry V2獲取圖像ID嗎?
回答
如果圖像用泊塢客戶1.10或以上推壓,可以從註冊表獲取圖像ID與
GET /v2/<image>/manifests/<tag>
你的請求必須包括頭
Accept: application/vnd.docker.distribution.manifest.v2+json
在響應中,圖像ID將位於Content-Docker-Digest
響應標題中。
盡我所知,他們不存儲在任何API訪問的位置:
bash$ docker run -d -p 5000:5000 --restart=always --name registry registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
...
bash$ docker tag busybox localhost:5000/busybox
bash$ docker push localhost:5000/busybox
The push refers to a repository [localhost:5000/busybox]
5f70bf18a086: Pushed
...
bash$ curl http://localhost:5000/v2/busybox/tags/list
{"name":"busybox","tags":["latest"]}
bash$ curl http://localhost:5000/v2/busybox/manifests/latest
{
"schemaVersion": 1,
"name": "busybox",
"tag": "latest",
"architecture": "amd64",
"fsLayers": [
{
"blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
},
{
"blobSum": "sha256:385e281300cc6d88bdd155e0931fbdfbb1801c2b0265340a40481ee2b733ae66"
}
],
"history": [
{
"v1Compatibility": "{\"architecture\":\"amd64\",\"config\":{\"Hostname\":\"156e10b83429\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":[\"sh\"],\"Image\":\"56ed16bd6310cca65920c653a9bb22de6b235990dcaa1742ff839867aed730e5\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"container\":\"5f8098ec29947b5bea80483cd3275008911ce87438fed628e34ec0c522665510\",\"container_config\":{\"Hostname\":\"156e10b83429\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) CMD [\\\"sh\\\"]\"],\"Image\":\"56ed16bd6310cca65920c653a9bb22de6b235990dcaa1742ff839867aed730e5\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"created\":\"2016-03-18T18:22:48.810791943Z\",\"docker_version\":\"1.9.1\",\"id\":\"437595becdebaaaf3a4fc3db02c59a980f955dee825c153308c670610bb694e1\",\"os\":\"linux\",\"parent\":\"920777304d1d5e337bc59877253e946f224df5aae64c72538672eb74637b3c9e\"}"
},
{
"v1Compatibility": "{\"id\":\"920777304d1d5e337bc59877253e946f224df5aae64c72538672eb74637b3c9e\",\"created\":\"2016-03-18T18:22:48.262403239Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -C#(nop) ADD file:47ca6e777c36a4cfffe3f918b64a445c8f32300deeb9dfa5cc47261bd7b75d21 in /\"]}}"
}
],
"signatures": [
{
"header": {
"jwk": {
"crv": "P-256",
"kid": "FIFX:SJRD:AQHW:MCFX:M6WC:LXI2:3VO2:4LFW:UHDZ:QUN7:OLX4:6WGD",
"kty": "EC",
"x": "Xm8wJTzw3nb--rGoD3dxjKffikj7Snb9dHW-qGbqSAM",
"y": "GnATS--7lVcA_-jQGuDKTtjhmnGgvBrx8rLdlPOJV3U"
},
"alg": "ES256"
},
"signature": "f8NVzOF6ujm_0COedniGCGL_q3KsTfKFM9T8ZZDf2MSIMJ3TYoR_s795NqdEy8yWaoLuT2LoI0BCEsuOTZUhCw",
"protected": "eyJmb3JtYXRMZW5ndGgiOjE5MTQsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAxNi0wNi0xMVQwMToxMzoyMVoifQ"
}
]
bash$ curl -I http://localhost:5000/v2/busybox/manifests/latest
HTTP/1.1 200 OK
Content-Length: 2561
Content-Type: application/vnd.docker.distribution.manifest.v1+prettyjws
Docker-Content-Digest: sha256:e45f25b1760f616e65f106b424f4ef29185fbd80822255d79dabc73b8eb715ad
Docker-Distribution-Api-Version: registry/2.0
Etag: "sha256:e45f25b1760f616e65f106b424f4ef29185fbd80822255d79dabc73b8eb715ad"
X-Content-Type-Options: nosniff
Date: Sat, 11 Jun 2016 01:21:26 GMT
無論身在何處的任何這些API調用的我能找到想要的47bcc53 ...圖片ID,我看到當地。
bash$ docker inspect busybox:latest
[
{
"Id": "sha256:47bcc53f74dc94b1920f0b34f6036096526296767650f223433fe65c35f149eb",
"RepoTags": [
"busybox:latest",
"localhost:5000/busybox:latest"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2016-03-18T18:22:48.810791943Z",
"Container": "5f8098ec29947b5bea80483cd3275008911ce87438fed628e34ec0c522665510",
"ContainerConfig": {
"Hostname": "156e10b83429",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": [
"/bin/sh",
"-c",
"#(nop) CMD [\"sh\"]"
],
"Image": "56ed16bd6310cca65920c653a9bb22de6b235990dcaa1742ff839867aed730e5",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "1.9.1",
"Author": "",
"Config": {
"Hostname": "156e10b83429",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": [
"sh"
],
"Image": "56ed16bd6310cca65920c653a9bb22de6b235990dcaa1742ff839867aed730e5",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1112820,
"VirtualSize": 1112820,
"GraphDriver": {
"Name": "aufs",
"Data": null
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:1834950e52ce4d5a88a1bbd131c537f4d0e56d10ff0dd69e66be3b7dfa9df7e6",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
]
}
}
]
從this image spec的圖片ID是一個可重複的哈希值,我的確看到在不同的系統的圖片ID相同的值。
圖像標識 各圖像的ID,通過其配置JSON的SHA256散列給出。它表示爲256位的十六進制編碼,例如, sha256:a9561eb1b190625c9adb5a9513e72c4dedafc1cb2d4c5236c9a6957ec7dfd5a9。 由於配置JSON在圖像中獲取散列的每個圖層的散列引用哈希值 ,因此ImageID的這個公式使圖像 content-addresable。
因此,如果您可以從API調用中重現配置JSON,那麼您可以自己生成圖像ID。
謝謝!這個答案就是我基於我的研究所預期的......看起來獲取存儲庫映像的映像ID的唯一方法是嘗試獲取配置JSON,並通過Docker守護進程的相同哈希算法重新生成映像ID。 –
從我的研究,你可以用
curl -H 'Accept: application/vnd.docker.distribution.manifest.v2+json' http://$server/v2/$repo/manifests/$tag
,並在響應中config.digest
字段表示圖像標識從註冊表獲取(2.3.0+)的圖像ID,你想要的!
是指: https://duyanghao.github.io/docker-registry-pull-manifest-v2/
- 1. 從圖像id中獲取圖像android
- 2. FB.ui的屬性'圖片'可以從HttpHandler中獲取圖像嗎?
- 3. MissingBlobException當從/進入Nexus 3 Docker-Registry
- 4. Nexus Docker Registry - Failling anonymous pull
- 5. 可以從庫的PHAsset獲取圖像
- 6. 你可以從IOS中的assetURL獲取圖像文件名嗎?
- 7. 可以從BufferedImage獲取原始圖像嗎?
- 8. 我可以使用Dropbox V2 API中的文件ID搜索/獲取文件嗎?
- 9. Docker Registry的GC集合
- 10. 獲取ID?像SharePoint這樣的當前用戶可以嗎?
- 11. 獲取可繪製圖像ID
- 12. 服務Fabric容器項目可以從Docker Hub中提取嗎?
- 13. 從touchstart事件獲取圖像ID javascript
- 14. 從iPhone相冊中獲取圖像ID
- 15. Android:從圖像ID獲取字節[
- 16. 如何從uri獲取圖像ID?
- 17. 在android中,獲取從相機捕獲圖像的圖像ID
- 18. 我可以從複選框中獲取「id」和「value」元素嗎?
- 19. onListItemClick,我可以從'id'獲取絕對位置嗎?
- 20. 從Kinect v2傳感器捕獲圖像
- 21. pdfbox可以提取矢量圖像嗎?
- 22. Docker Registry和Docker Index之間有什麼區別?
- 23. 如何從GitLab的Docker Registry中取出.gitlab-ci.yml文件?
- 24. 我可以使用docker-compose構建一個容器圖像嗎?
- 25. 如何從可繪製的圖像中獲取唯一的ID!
- 26. 我可以在docker-compose.yml文件中設置/獲取變量嗎?
- 27. 如何從使用jquery的點擊圖像獲取圖像ID?
- 28. 獲取頂級Docker Hub映像的API?
- 29. 我可以爲Developer Express WebChartControl獲取圖像輸出嗎?
- 30. 如何獲取Docker鏡像以運行可執行文件
謝謝,這就是我現在正在做的。 –