2016-02-28 80 views
0

考虑到我建立和标记的图像,像这样:比较多克标签

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

怎么能一后,确认这两个代码是否指的是同样的事情?我希望能够通过注册表API(v2)来做到这一点,因为我可能本地没有这两个图像。这样做的

回答

1

一(?乏味)的方法包括将在连接到每个标签的清单文件中注册的fsLayers

下载http://your-registry/v2/repo/image/manifests/tag1http://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阵列。如果两个清单之间相等,则基于这些标记构建容器将得到相同的结果(即它们指向相同的事物)。

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