关于 docker 镜像大小的接口

2019-06-22 19:04:29 +08:00
 Hopetree

我找到一个官方接口可以查询到每个镜像的 tags 信息,但是我不是很理解这个接口里面关于镜像大小的参数,为什么跟我拉取的镜像的大小完全对不上?

接口是: https://registry.hub.docker.com/v2/repositories/library/redis/tags/?page=2 想看的可以点开连接看完整数据,不想点开的看下面部分数据:

{
      "name": "alpine",
      "full_size": 17785903,
      "images": [
        {
          "size": 17842941,
          "architecture": "s390x",
          "variant": null,
          "features": null,
          "os": "linux",
          "os_version": null,
          "os_features": null
        },
        {
          "size": 18640291,
          "architecture": "ppc64le",
          "variant": null,
          "features": null,
          "os": "linux",
          "os_version": null,
          "os_features": null
        },

比如这里我查到了 redis 有个 tag 是 alpine ,这个里面有几个参数我不是很理解,

"full_size": 17785903 #按照我的理解应该是表示这个镜像的最终大小,但是我拉到本地,发现大小是 50.9MB,怎么换算都对不上这个数据
"images" 是一个列表,我的理解是镜像的层级,表示这个镜像是怎么构建出来的。同样对 size 参数不解

能否有大佬帮忙解释一下这个接口里面的信息的意义

4070 次点击
所在节点    Docker
4 条回复
CEBBCAT
2019-06-22 19:14:10 +08:00
architecture 是平台的意思吧,不是很了解 docker,是不是针对不同平台提供了不同的 image ?
Beebird
2019-06-22 20:00:21 +08:00
full size 应该是压缩后的镜像大小。但是下载时每个 layer 都是一个 tar 包,pull 的时候下载完成立刻解压。所以真正落到你文件系统的 image 大小是所有 layer 大小相加。
Beebird
2019-06-22 20:03:21 +08:00
还有就是这个 image list 不是层级,而且为不同架构平台 build 的 image
Hopetree
2019-06-23 00:30:03 +08:00
@CEBBCAT
@Beebird
感谢回复,不是层级那就对了,我还在想为什么有的镜像要搞那么多层级,感觉一个 dockerfile 就行了,原来是平台

不过镜像 size 那个我是真的还是没搞清楚怎么算的,我对比了好几个拉下的镜像,发现得不到一个比例常量

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/576493

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX