如何通过docker API正确获取docker映像的总大小?

如何通过docker API正确获取docker映像的总大小?,docker,Docker,我想通过docker API获取docker映像的总大小,比如get/v2//manifests/,这里描述了它 我得到了一个带有大小的图层列表,比如这个,我把这些大小加起来,但得到的数字比docker images命令show小,因为我知道docker注册表将这些图层文件存储为gzip tar文件,所以这个总和应该小于docker images命令显示的大小 如何通过docker API正确获取总图像大小? 我希望获得与docker images命令显示相同的大小。TLDR docker im

我想通过docker API获取docker映像的总大小,比如get/v2//manifests/,这里描述了它

我得到了一个带有大小的图层列表,比如这个,我把这些大小加起来,但得到的数字比docker images命令show小,因为我知道docker注册表将这些图层文件存储为gzip tar文件,所以这个总和应该小于docker images命令显示的大小

如何通过docker API正确获取总图像大小? 我希望获得与docker images命令显示相同的大小。

TLDR docker images给出的大小是本地安装的映像的未压缩大小,您只能从注册表中获取每个架构的压缩映像的大小,如果您需要每个层的压缩映像的大小

从本地图像 docker images给定的大小是系统上图像的未压缩大小

获取阿尔卑斯山的大小:最新 docker图像:最新格式{{.Repository}:{{.Tag}->{.Size} 阿尔卑斯山:最新->5.57MB 如果使用docker inspect命令在本地下载图像,则可以获得相同的信息

从登记处 据我所知,您只能从注册表中获得图像的压缩大小

事实上,注册表可以给出每个体系结构的图像大小

curl-shttps://hub.docker.com/v2/repositories/library/alpine/tags/ | \ jq'.results[]| select.name==latest |.images[]|{architecture:.architecture,size:.size} { 架构:arm, 尺寸:2405675 } { 架构:arm, 尺寸:2601912 } { 建筑:386, 尺寸:2791407 } { 架构:s390x, 尺寸:2565829 } { 架构:ppc64le, 尺寸:2803218 } { 架构:amd64, 尺码:2796860 } { 架构:arm64, 尺寸:2706555 } 您甚至可以使用docker manifest inspect命令获得每个层的压缩大小的详细信息

激活实验模式 导出DOCKER\u CLI\u experional=已启用 码头工人舱单检查-v阿尔卑斯:最新版本\ jq.[]| select.Descriptor.platform.architecture==amd64 |.SchemaV2Manifest.layers[].size' 2796860 如果有多个图层,则可以将其相加。下面是jupyter/base笔记本的一个示例:最新

通过API获取大小 curl-shttps://hub.docker.com/v2/repositories/jupyter/base-notebook/tags | \ jq'.results[]| select.name==最新的|.全尺寸' 187647701 每层求和 docker manifest inspect jupyter/base笔记本:最新的| jq'[.layers[].size]|添加' 187647701
您使用了什么命令?@Rao,您好,我使用docker images命令获取一个图像sizeI询问您在文章开头提到的get call命令,您正在与docker图像进行比较。@Rao,我使用这个HTTP API:gethttp://registry:5000/v2/library/mysql/manifests/5.6
docker inspect alpine:latest | jq '.[].Size' 

# 5573013
curl -s https://hub.docker.com/v2/repositories/library/alpine/tags/ | \
        jq '.results[] | select(.name=="latest") | .full_size'

# 2796860