Ili*_*hev 8 containers image-size docker docker-registry
我有一个私人注册表,我存储了所有的docker镜像.
我注意到当我从中提取图像时,我本地计算机上的图像大小与注册表上图像大小的差异很大.
例如,我有一个名为mydb的图像(大约126 MB).
当我在我的本地机器上拉它并执行"docker images"时,它表示该图像的"VIRTUAL SIZE"现在差不多大三倍(388 MB).
我想知道它是什么原因以及"VIRTUAL SIZE"实际上意味着什么.
谢谢 :) .
Gei*_*e V 10
你可以在这里找到这个概念的一个很好的解释:https : //github.com/docker/docker.github.io/issues/1520#issuecomment-305179362
从塔耶兹塔
“大小”和“虚拟大小”描述了容器使用的磁盘空间量。让我试着解释一下:
启动容器时,启动容器的镜像以只读方式挂载。最重要的是,安装了一个可写层,其中写入了对容器所做的任何更改。
镜像的只读层可以在从同一镜像启动的任何容器之间共享,而“可写”层对于每个容器都是唯一的(因为:您不希望在容器“a”中所做的更改出现在容器“b”微笑)
回到
docker ps -s输出;“大小”信息显示用于每个容器的可写层的数据量(在磁盘上)“虚拟大小”是用于容器使用的只读图像数据的磁盘空间总量,可写层。它被命名为“虚拟大小”的原因是(如前所述),只读层的磁盘空间可以在容器之间共享,因此只占用一次 磁盘空间
(可能是一个不同的名称(“共享“尺寸?)事后看来会更好,但命名很难:))。编辑:virtual实际上显示了只读层(图像)和容器的可写层的组合大小。在下面的示例中,我启动了 10 个 nginx 容器;
所有这些容器都使用相同的映像,因此“虚拟大小”(示例中为 183MB)仅使用一次,无论从同一映像启动多少个容器 - 我可以启动 1 个或一千个容器;不使用额外的磁盘空间。“大小”(示例中为 2B)是每个容器唯一的,因此磁盘上使用的总空间为:
183MB + 10 * 2B
请注意,显示的大小不包括用于容器的所有磁盘空间。目前不包括的东西是;
- 用于日志文件的磁盘空间(如果您使用 json-file 日志驱动程序) - 如果您的容器生成大量日志,并且日志轮换(最大文件/最大大小日志选项)是相当多的未配置
- 容器使用的卷
- 用于容器配置文件(hostconfig.json、config.v2.json、hosts、hostname、resolv.conf)的磁盘空间——
尽管这些文件很小- 写入磁盘的内存(如果启用了交换)
- 检查点(如果您使用的是实验性检查点/恢复功能)
小智 -5
“虚拟”大小和常规大小并不神秘,但您应该记住,如果愿意的话,图像具有中间图像或“缓存”。因此,图像的虚拟大小就是您看到的大小:
docker images
Run Code Online (Sandbox Code Playgroud)
图像的图像磁盘大小是与该图像关联的所有缓存图像的总和,您可以通过以下方式查看:
docker images -a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2560 次 |
| 最近记录: |