0
考慮到我建立和標記的圖像,像這樣:比較多克標籤
docker build -t foo:bar .
docker tag foo:bar foo:baz
怎麼能一後,確認這兩個代碼是否指的是同樣的事情?我希望能夠通過註冊表API(v2)來做到這一點,因爲我可能本地沒有這兩個圖像。這樣做的
考慮到我建立和標記的圖像,像這樣:比較多克標籤
docker build -t foo:bar .
docker tag foo:bar foo:baz
怎麼能一後,確認這兩個代碼是否指的是同樣的事情?我希望能夠通過註冊表API(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
陣列。如果兩個清單之間相等,則基於這些標記構建容器將得到相同的結果(即它們指向相同的事物)。
如果您有本地圖像,比較imageId
(通過docker inspect
爲每個標籤)是足夠和容易。但我不認爲這個ID可以從註冊表中獲得。