Docker и такие инструменты, как Dive, могут показывать вам размер каждого слоя, когда они существуют на диске. Но меня больше интересует, сколько пропускной способности требуется, чтобы вытащить каждый слой, что отличается, потому что слои хранятся сжаты.
$ docker pull --platform linux/amd64 ubuntu:22.04
$ docker history ubuntu:22.04
IMAGE CREATED CREATED BY SIZE COMMENT
cc934a90cd99 11 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
11 days ago /bin/sh -c #(nop) ADD file:433cf0b8353e08be3… 77.9MB
11 days ago /bin/sh -c #(nop) LABEL org.opencontainers.… 0B
11 days ago /bin/sh -c #(nop) LABEL org.opencontainers.… 0B
11 days ago /bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH 0B
11 days ago /bin/sh -c #(nop) ARG RELEASE 0B
< /code>
Но если вы посмотрите на манифест, откуда он хранится, теперь есть только один слой, а его размер составляет 29,5 МБ (я уронил некоторые из неуместных записей): < /p>
$ docker manifest inspect --verbose ubuntu:22.04
{
"Ref": "docker.io/library/ubuntu:22.04@sha256:a76d0e9d99f0e91640e35824a6259c93156f0f07b7778ba05808c750e7fa6e68",
"Descriptor": {
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:a76d0e9d99f0e91640e35824a6259c93156f0f07b7778ba05808c750e7fa6e68",
"size": 424,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"OCIManifest": {
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"config": {
"mediaType": "application/vnd.oci.image.config.v1+json",
"size": 2297,
"digest": "sha256:cc934a90cd99a939f3922f858ac8f055427300ee3ee4dfcd303c53e571d0aeab"
},
"layers": [
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"size": 29532365,
"digest": "sha256:30a9c22ae099393b0131322d7f50d8a9d7cd06c5e518cd27a19ac960a4d0aba3"
}
]
}
}
Проблема в том, что не всегда ясно, какой слой из истории Docker идет с каким слоем в манифесте. Для Ubuntu: 22.04 , История Docker показывает 6 слоев, но в манифесте показан 1. Я не вижу, как ссылаться на один на другой. 36.
Docker и такие инструменты, как Dive, могут показывать вам размер каждого слоя, когда они существуют на диске. Но меня больше интересует, сколько пропускной способности требуется, чтобы вытащить каждый слой, что отличается, потому что слои хранятся сжаты.[code]$ docker pull --platform linux/amd64 ubuntu:22.04 $ docker history ubuntu:22.04 IMAGE CREATED CREATED BY SIZE COMMENT cc934a90cd99 11 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B 11 days ago /bin/sh -c #(nop) ADD file:433cf0b8353e08be3… 77.9MB 11 days ago /bin/sh -c #(nop) LABEL org.opencontainers.… 0B 11 days ago /bin/sh -c #(nop) LABEL org.opencontainers.… 0B 11 days ago /bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH 0B 11 days ago /bin/sh -c #(nop) ARG RELEASE 0B < /code> Но если вы посмотрите на манифест, откуда он хранится, теперь есть только один слой, а его размер составляет 29,5 МБ (я уронил некоторые из неуместных записей): < /p> $ docker manifest inspect --verbose ubuntu:22.04 { "Ref": "docker.io/library/ubuntu:22.04@sha256:a76d0e9d99f0e91640e35824a6259c93156f0f07b7778ba05808c750e7fa6e68", "Descriptor": { "mediaType": "application/vnd.oci.image.manifest.v1+json", "digest": "sha256:a76d0e9d99f0e91640e35824a6259c93156f0f07b7778ba05808c750e7fa6e68", "size": 424, "platform": { "architecture": "amd64", "os": "linux" } }, "OCIManifest": { "schemaVersion": 2, "mediaType": "application/vnd.oci.image.manifest.v1+json", "config": { "mediaType": "application/vnd.oci.image.config.v1+json", "size": 2297, "digest": "sha256:cc934a90cd99a939f3922f858ac8f055427300ee3ee4dfcd303c53e571d0aeab" }, "layers": [ { "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", "size": 29532365, "digest": "sha256:30a9c22ae099393b0131322d7f50d8a9d7cd06c5e518cd27a19ac960a4d0aba3" } ] } } [/code] Проблема в том, что не всегда ясно, какой слой из истории Docker идет с каким слоем в манифесте. Для Ubuntu: 22.04 , История Docker показывает 6 слоев, но в манифесте показан 1. Я не вижу, как ссылаться на один на другой. 36.