TL;DR:我无法理解为什么telegraf@sha256:05cbea951c5cf9da6c663321b32848c1b6ffdfa877563237838efa21b508b079
和telegraf@sha256:848201b0601513122f567a6b690b5ef84abbb38e78ca461d1c1d3d7465691d39
是相同的图像telegraf:1.31
,而前者却在任何地方都没有提到。我几乎可以肯定这些是完全相同的图像,但我试图了解未知的来源sha256:05cbea9
。
我正在一台主机上工作,注意到 Telegraf 的 Docker 镜像有两个存储库摘要,这引起了一些好奇,因为我希望只看到索引摘要或索引摘要和 linux/amd64 摘要,因为该镜像是多架构镜像,主机是 linux/amd64。
当我跑步时:
docker inspect 4fffb7e682428f97779fdee3f4c44d062de6da9ba4a754a0f3b3f0ecaf87052e
在服务器上,我得到以下输出:
"RepoDigests": [
"telegraf@sha256:05cbea951c5cf9da6c663321b32848c1b6ffdfa877563237838efa21b508b079",
"telegraf@sha256:6b0d623c54754958fed356d2af239de21dcf7c95d63b76298d0cd70df79cc719"
],
第二个摘要似乎没问题,因为它代表索引摘要。但是,当我检查 Docker Hub 的 API 时,根本没有提到第一个摘要(05cbea…):
curl -s https://hub.docker.com/v2/namespaces/library/repositories/telegraf/tags/1.31 | jq '.images[] | "\(.architecture) \(.digest)"' | grep 05cbea951c5cf9da6c663321b32848c1b6ffdfa877563237838efa21b508b079
# Grep returns an empty result here
curl -s https://hub.docker.com/v2/namespaces/library/repositories/telegraf/tags/1.31 | jq '.images[] | "\(.architecture) \(.digest)"' | grep amd64
"amd64 sha256:848201b0601513122f567a6b690b5ef84abbb38e78ca461d1c1d3d7465691d39"
然而,它们仍然是同一张图像。以下是我检查的方法:
第一个哈希;
docker pull telegraf@sha256:05cbea951c5cf9da6c663321b32848c1b6ffdfa877563237838efa21b508b079
docker images|grep telegraf
telegraf <none> 4fffb7e68242 4 weeks ago 472MB
docker inspect 4fffb7e68242 --format='{{json .}}'| jq '"\(.Created) \(.Config.Env[1]) \(.RepoDigests)"'
"2024-08-12T15:27:35Z TELEGRAF_VERSION=1.31.3 [\"telegraf@sha256:05cbea951c5cf9da6c663321b32848c1b6ffdfa877563237838efa21b508b079\"]"
第二个哈希;
docker pull telegraf@sha256:848201b0601513122f567a6b690b5ef84abbb38e78ca461d1c1d3d7465691d39
docker images|grep telegraf
telegraf <none> 4fffb7e68242 4 weeks ago 472MB
docker inspect 4fffb7e68242 --format='{{json .}}'| jq '"\(.Created) \(.Config.Env[1]) \(.RepoDigests)"'
"2024-08-12T15:27:35Z TELEGRAF_VERSION=1.31.3 [\"telegraf@sha256:848201b0601513122f567a6b690b5ef84abbb38e78ca461d1c1d3d7465691d39\"]"
我想知道我这里遗漏了什么。任何提示我都会很感激。
编辑;
我唯一忘记提到的事情是由 docker swarm 堆栈运行的 telegraf 容器。我认为这会对图像的提取方式产生影响。
最佳答案
1
您正在将图像的旧图钉与使用新基础图像重建的图像进行比较:
$ regctl image digest telegraf:1.31
sha256:6b0d623c54754958fed356d2af239de21dcf7c95d63b76298d0cd70df79cc719
对比一下旧版的图钉:
$ docker buildx imagetools inspect telegraf@sha256:05cbea951c5cf9da6c663321b32848c1b6ffdfa877563237838efa21b508b079
Name: docker.io/library/telegraf@sha256:05cbea951c5cf9da6c663321b32848c1b6ffdfa877563237838efa21b508b079
MediaType: application/vnd.oci.image.index.v1+json
Digest: sha256:05cbea951c5cf9da6c663321b32848c1b6ffdfa877563237838efa21b508b079
Manifests:
Name: docker.io/library/telegraf@sha256:848201b0601513122f567a6b690b5ef84abbb38e78ca461d1c1d3d7465691d39
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: linux/amd64
Annotations:
org.opencontainers.image.url: https://hub.docker.com/_/telegraf
org.opencontainers.image.version: 1.31
com.docker.official-images.bashbrew.arch: amd64
org.opencontainers.image.base.digest: sha256:66e568a0a9e5131643f75cea2fe66c8b45cc0395469455b5769ec2f051ee687b
org.opencontainers.image.base.name: buildpack-deps:bookworm-curl
org.opencontainers.image.created: 2024-09-05T00:09:53Z
org.opencontainers.image.revision: 426ed76c51f465daebb33547e3bb9632b974440f
org.opencontainers.image.source: https://github.com/influxdata/influxdata-docker.git#426ed76c51f465daebb33547e3bb9632b974440f:telegraf/1.31
Name: docker.io/library/telegraf@sha256:2a62640c6c53a3deea2ef3848d66f2e39ff8674da9e55d8b4114f7ddc9a1b3bb
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: unknown/unknown
Annotations:
com.docker.official-images.bashbrew.arch: amd64
vnd.docker.reference.digest: sha256:848201b0601513122f567a6b690b5ef84abbb38e78ca461d1c1d3d7465691d39
vnd.docker.reference.type: attestation-manifest
Name: docker.io/library/telegraf@sha256:8ab2fcde5e8d5ae97676fa951049c91135adc065a30e0cd4dae5daef50665e42
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: linux/arm/v7
Annotations:
org.opencontainers.image.base.digest: sha256:8ac69ca67724de8c39cb2e7713440ce46aca8326fccccd92d854145a4c486a36
org.opencontainers.image.base.name: buildpack-deps:bookworm-curl
org.opencontainers.image.created: 2024-08-14T00:31:20Z
org.opencontainers.image.revision: 426ed76c51f465daebb33547e3bb9632b974440f
org.opencontainers.image.source: https://github.com/influxdata/influxdata-docker.git#426ed76c51f465daebb33547e3bb9632b974440f:telegraf/1.31
org.opencontainers.image.url: https://hub.docker.com/_/telegraf
org.opencontainers.image.version: 1.31
com.docker.official-images.bashbrew.arch: arm32v7
Name: docker.io/library/telegraf@sha256:2a1644b24ec3f214b33e4388d95ad4bf1e482a071ec24b625acd7d975f26d6c9
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: unknown/unknown
Annotations:
com.docker.official-images.bashbrew.arch: arm32v7
vnd.docker.reference.digest: sha256:8ab2fcde5e8d5ae97676fa951049c91135adc065a30e0cd4dae5daef50665e42
vnd.docker.reference.type: attestation-manifest
Name: docker.io/library/telegraf@sha256:7303af7d29d74d38605bfc94fd62d936ea8d42fed1515695e94d189a98c3537d
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: linux/arm64/v8
Annotations:
org.opencontainers.image.revision: 426ed76c51f465daebb33547e3bb9632b974440f
org.opencontainers.image.source: https://github.com/influxdata/influxdata-docker.git#426ed76c51f465daebb33547e3bb9632b974440f:telegraf/1.31
org.opencontainers.image.url: https://hub.docker.com/_/telegraf
org.opencontainers.image.version: 1.31
com.docker.official-images.bashbrew.arch: arm64v8
org.opencontainers.image.base.digest: sha256:8b5f3df20dc4d7dd3c5e730a8353ffa21a6ccb9d444507ebcc302cc3eaf6f3cf
org.opencontainers.image.base.name: buildpack-deps:bookworm-curl
org.opencontainers.image.created: 2024-08-13T19:51:17Z
Name: docker.io/library/telegraf@sha256:14a0be6cc37a23c99d9488415fa573f12dd555eb3a567a347fb4e89f6f91f819
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: unknown/unknown
Annotations:
vnd.docker.reference.digest: sha256:7303af7d29d74d38605bfc94fd62d936ea8d42fed1515695e94d189a98c3537d
vnd.docker.reference.type: attestation-manifest
com.docker.official-images.bashbrew.arch: arm64v8
对于新标记的图像:
$ docker buildx imagetools inspect telegraf:1.31
Name: docker.io/library/telegraf:1.31
MediaType: application/vnd.oci.image.index.v1+json
Digest: sha256:6b0d623c54754958fed356d2af239de21dcf7c95d63b76298d0cd70df79cc719
Manifests:
Name: docker.io/library/telegraf:1.31@sha256:848201b0601513122f567a6b690b5ef84abbb38e78ca461d1c1d3d7465691d39
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: linux/amd64
Annotations:
org.opencontainers.image.source: https://github.com/influxdata/influxdata-docker.git#426ed76c51f465daebb33547e3bb9632b974440f:telegraf/1.31
org.opencontainers.image.url: https://hub.docker.com/_/telegraf
org.opencontainers.image.version: 1.31
com.docker.official-images.bashbrew.arch: amd64
org.opencontainers.image.base.digest: sha256:66e568a0a9e5131643f75cea2fe66c8b45cc0395469455b5769ec2f051ee687b
org.opencontainers.image.base.name: buildpack-deps:bookworm-curl
org.opencontainers.image.created: 2024-09-05T00:09:53Z
org.opencontainers.image.revision: 426ed76c51f465daebb33547e3bb9632b974440f
Name: docker.io/library/telegraf:1.31@sha256:2a62640c6c53a3deea2ef3848d66f2e39ff8674da9e55d8b4114f7ddc9a1b3bb
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: unknown/unknown
Annotations:
com.docker.official-images.bashbrew.arch: amd64
vnd.docker.reference.digest: sha256:848201b0601513122f567a6b690b5ef84abbb38e78ca461d1c1d3d7465691d39
vnd.docker.reference.type: attestation-manifest
Name: docker.io/library/telegraf:1.31@sha256:18ee367acddef6bc891ae4edf18785ecf75d7ce476c9c559baa36d06e58a27a1
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: linux/arm/v7
Annotations:
org.opencontainers.image.base.digest: sha256:5f2f9b35615c65ef5907c414739f3c797f3ffed0d930f9dd7b804fb44c6e2f8a
org.opencontainers.image.base.name: buildpack-deps:bookworm-curl
org.opencontainers.image.created: 2024-09-06T04:14:41Z
org.opencontainers.image.revision: 426ed76c51f465daebb33547e3bb9632b974440f
org.opencontainers.image.source: https://github.com/influxdata/influxdata-docker.git#426ed76c51f465daebb33547e3bb9632b974440f:telegraf/1.31
org.opencontainers.image.url: https://hub.docker.com/_/telegraf
org.opencontainers.image.version: 1.31
com.docker.official-images.bashbrew.arch: arm32v7
Name: docker.io/library/telegraf:1.31@sha256:06658911b19998c722152953ae140cd59e9be6fd7d10efce48dc0be4c7549c20
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: unknown/unknown
Annotations:
com.docker.official-images.bashbrew.arch: arm32v7
vnd.docker.reference.digest: sha256:18ee367acddef6bc891ae4edf18785ecf75d7ce476c9c559baa36d06e58a27a1
vnd.docker.reference.type: attestation-manifest
Name: docker.io/library/telegraf:1.31@sha256:8ab8223cf42035683913aac257a4a0bef2da657b9a1f9b6b82a25230789fe10f
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: linux/arm64/v8
Annotations:
org.opencontainers.image.base.name: buildpack-deps:bookworm-curl
org.opencontainers.image.created: 2024-09-05T20:30:15Z
org.opencontainers.image.revision: 426ed76c51f465daebb33547e3bb9632b974440f
org.opencontainers.image.source: https://github.com/influxdata/influxdata-docker.git#426ed76c51f465daebb33547e3bb9632b974440f:telegraf/1.31
org.opencontainers.image.url: https://hub.docker.com/_/telegraf
org.opencontainers.image.version: 1.31
com.docker.official-images.bashbrew.arch: arm64v8
org.opencontainers.image.base.digest: sha256:3ecd6e86b392efaaa7b0ccfc022e224fe6542a1c5a76865b63fbe3362af4e489
Name: docker.io/library/telegraf:1.31@sha256:c3bffc37d556833052d636c8f9bf84c7db5f8a05ed0fe726ad051efba5fa8c3f
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: unknown/unknown
Annotations:
com.docker.official-images.bashbrew.arch: arm64v8
vnd.docker.reference.digest: sha256:8ab8223cf42035683913aac257a4a0bef2da657b9a1f9b6b82a25230789fe10f
vnd.docker.reference.type: attestation-manifest
看起来 ARM 基础图像已更新,而 AMD64 基础图像未发生改变,并且图像可重复构建为相同的摘要。
1
-
让我感到困惑的是,如果我拉取 1.31 并拉取其
05cbea9
顶部,我会看到两个摘要,但现在我明白了它的工作原理。感谢您花时间帮助我。我非常感激。
–
|
|