比较 Docker 个标签
Comparing Docker Tags
假设我像这样构建和标记图像:
docker build -t foo:bar .
docker tag foo:bar foo:baz
我以后怎么确认这两个标签指的是不是同一个东西?我希望能够通过注册表 API (v2) 执行此操作,因为我可能在本地没有两个图像。
一种(乏味?)方法包括比较每个标签附加的清单文件中注册的 fsLayers
:
下载http://your-registry/v2/repo/image/manifests/tag1 and 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可以从注册表中获取。
假设我像这样构建和标记图像:
docker build -t foo:bar .
docker tag foo:bar foo:baz
我以后怎么确认这两个标签指的是不是同一个东西?我希望能够通过注册表 API (v2) 执行此操作,因为我可能在本地没有两个图像。
一种(乏味?)方法包括比较每个标签附加的清单文件中注册的 fsLayers
:
下载http://your-registry/v2/repo/image/manifests/tag1 and 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可以从注册表中获取。