比较Docker标签

鉴于我build立和标记一个图像像这样:

docker build -t foo:bar . docker tag foo:bar foo:baz 

以后我怎么能确认两个标签是否指同一个东西? 我希望能够通过registryAPI(v2)来做到这一点,因为我可能本地没有这两个图像。

一种(乏味的)做法包括比较每个标签附带的清单文件中注册的fsLayers

下载http:// your-registry / v2 / repo / image / manifests / tag1和http:// your-registry / v2 / repo / image / manifests / tag2 :

 { "name": "repo/image", "tag": "tag1", "architecture": "amd64", "fsLayers": [{ "blobSum": "sha256:d7958e841d1f103cc24e45cb6108eaf09ecf0b424f071ac6b6ab39241cec293d" }, { "blobSum": "sha256:d7958e841d1f103cc24e45cb6108eaf09ecf0b424f071ac6b6ab39241cec293d" }, { "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4" }], "history": [ (...) ], "schemaVersion": 1, "signatures": [{ "header": { (...) }, "signature": "PwuBjXLvQE_DtF29YtyJF2N-zHkVGRh93It4zxL1Igtoi093ykMvXBL_0J6E6-eQVeYrXm3IdDAll-922zeYzQ", "protected": "eyJmb3JtYXRMZW5ndGgiOjIwOTk0LCJmb3JtYXRUYWlsIjoiQ24wIiwidGltZSI6IjIwMTUtMTItMDdUMTM6NDE6MjJaIn0" }] } 

然后比较fsLayers数组。 如果两个清单之间相等,则根据这些标记构build容器将得到相同的结果(即它们指向相同的东西)。

如果你有本地图像,比较imageId (通过docker inspect每个标签)是足够和容易的。 但我不认为这个ID可以从registry中获得。