2016-02-28 103 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可以從註冊表中獲得。