docker 图像的虚拟大小是什么意思?

What does virtual size of docker image mean?

当您键入 docker images 时,它会显示哪些图像在本地可用以及其他信息。此信息的一部分是 虚拟大小 。那到底是什么?

我在GitHub Issues #22 on docker中找到了一些解释,但我还是不清楚。我真正想知道的是,要下载的字节数以及图像在我的硬盘上需要多少字节。

此外DockerHub 2.0还有一个信息。当您查看图像的 Tags 页面时,会显示另一个值。至少这似乎总是比docker images.

给出的信息小得多

"virtual size" 是指组成图像的所有层的磁盘大小的总和。例如,如果您有两个图像,app-1app-2,并且都基于总大小为 100MB 的公共 distro image/layer,并且 app-1额外增加 10MB,但 app-2 额外增加 20MB,虚拟大小将分别为 110MB 和 120MB,但总磁盘使用量仅为 130MB,因为基础层在两者之间共享。

由于在传输过程中对层应用了 gzip 压缩,因此传输大小将会变小(在大多数情况下会变小)。

https://github.com/docker-library/docs/blob/162cdda0b66dd62ea1cc80a64cb6c369e341adf4/irssi/tag-details.md#irssilatest 中提供的扩展细节可能会使这一点更加具体明显。如您所见,irssi:latest 的虚拟大小(所有磁盘层大小的总和)为 261.1MB,但 "Content-Length"(传输中的压缩大小)仅为 97.5MB,并且这是假设您还没有任何层,当您很可能已经下载了第一层时,它占虚拟大小的 125.1MB 和 "Content-Length" 的 51.4MB(很可能您已经有了它,因为顶层是 debian:jessie,这是顶层图像的通用基础)。

irssi:latest

  • Total Virtual Size: 261.1 MB (261122797 bytes)
  • Total v2 Content-Length: 97.5 MB (97485603 bytes)

Layers (13)

6d1ae97ee388924068b7a4797d995d57d1e6194843e7e2178e592a880bf6c7ad
  • Created: Fri, 04 Dec 2015 19:27:57 GMT
  • Docker Version: 1.8.3
  • Virtual Size: 125.1 MB (125115267 bytes)
  • v2 Blob: sha256:d4bce7fd68df2e8bb04e317e7cb7899e981159a4da89339e38c8bf30e6c318f0
  • v2 Content-Length: 51.4 MB (51354256 bytes)
  • v2 Last-Modified: Fri, 04 Dec 2015 19:45:49 GMT
8b9a99209d5c8f3fc5b4c01573f0508d1ddaa01c4f83c587e03b67497566aab9

...