我有一个私人注册表,我存储我所有的 Docker 的形象。我注意到,当我从其中提取一个图像时,本地计算机上的图像和注册表上的图像的大小差别很大。例如,我有一个名为mydb的映像(大约126 MB)。当我在本地计算机上调用它并执行***"docker images"*时,它说该映像的"虚拟大小"现在几乎大了三倍(388 MB)。我想知道它的原因是什么,以及"虚拟大小"**实际上是什么意思。谢谢你:)。
nkoocmlb1#
你可以在这里找到这个概念的一个很好的解释:https://github.com/docker/docker.github.io/issues/1520#issuecomment-305179362从杰兹塔“size”和“virtual size”描述了容器使用的磁盘空间量。让我试着解释一下:启动容器时,启动容器的映像将以只读方式安装。在此之上,将安装一个可写层,在其中写入对容器所做的任何更改。映像的只读层可以在从同一映像启动的任何容器之间共享,而“可写”层在每个容器中是唯一的(因为:你不希望在容器“a”中所做的更改出现在容器“B”中(笑)返回docker ps -s输出;大小”信息显示数据量(在磁盘上),用于每个容器的可写层“虚拟大小”是用于只读图像数据的磁盘空间总量,该只读图像数据由容器和可写层使用。(如前所述),只读层的磁盘空间可以在container之间共享,因此仅占用磁盘空间 * 一次 *(也许一个不同的名字(“共享”大小?)事后看来会更好,但命名很难:)。编辑:virtual实际上显示了容器的只读层(图像)和可写层的组合大小。在下面的示例中,我启动了10个nginx容器;
docker ps -s
virtual
所有这些容器都使用相同的映像,所以“虚拟大小”(在本例中为183 MB)只使用一次,而不管有多少个容器是从同一个映像启动的-我可以启动1个容器或1000个容器;没有额外的磁盘空间被使用。2“大小”(在例子中是2B)对于每个容器是唯一的,所以在磁盘上使用的总空间是:183 MB + 10个2字节请注意,显示的大小不包括容器使用的所有磁盘空间。目前不包括的内容有:
尽管这些文件很小
exdqitrt2#
现在,关于容器的**“虚拟尺寸”的说明可以在官方文件中找到。(But我不知道图像**是否有虚拟大小。)https://docs.docker.com/storage/storagedriver/#container-size-on-disk要查看正在运行的容器的大致大小,可以使用docker ps -s命令。两个不同的列与大小有关。
lawou6xi3#
“虚拟”大小和常规大小并不神秘,但您应该记住,映像有中间映像或“缓存”(如果您愿意)。因此,映像的虚拟大小是您看到的:
docker images
并且图像的图像磁盘大小是与此图像关联的所有缓存图像的总和,您可以看到:
docker images -a
3条答案
按热度按时间nkoocmlb1#
你可以在这里找到这个概念的一个很好的解释:https://github.com/docker/docker.github.io/issues/1520#issuecomment-305179362
从杰兹塔
“size”和“virtual size”描述了容器使用的磁盘空间量。让我试着解释一下:
启动容器时,启动容器的映像将以只读方式安装。在此之上,将安装一个可写层,在其中写入对容器所做的任何更改。
映像的只读层可以在从同一映像启动的任何容器之间共享,而“可写”层在每个容器中是唯一的(因为:你不希望在容器“a”中所做的更改出现在容器“B”中(笑)
返回
docker ps -s
输出;大小”信息显示数据量(在磁盘上),用于每个容器的可写层“虚拟大小”是用于只读图像数据的磁盘空间总量,该只读图像数据由容器和可写层使用。(如前所述),只读层的磁盘空间可以在container之间共享,因此仅占用磁盘空间 * 一次 *(也许一个不同的名字(“共享”大小?)事后看来会更好,但命名很难:)。编辑:
virtual
实际上显示了容器的只读层(图像)和可写层的组合大小。在下面的示例中,我启动了10个nginx容器;
所有这些容器都使用相同的映像,所以“虚拟大小”(在本例中为183 MB)只使用一次,而不管有多少个容器是从同一个映像启动的-我可以启动1个容器或1000个容器;没有额外的磁盘空间被使用。2“大小”(在例子中是2B)对于每个容器是唯一的,所以在磁盘上使用的总空间是:
183 MB + 10个2字节
请注意,显示的大小不包括容器使用的所有磁盘空间。目前不包括的内容有:
尽管这些文件很小
exdqitrt2#
现在,关于容器的**“虚拟尺寸”的说明可以在官方文件中找到。
(But我不知道图像**是否有虚拟大小。)
https://docs.docker.com/storage/storagedriver/#container-size-on-disk
要查看正在运行的容器的大致大小,可以使用docker ps -s命令。两个不同的列与大小有关。
lawou6xi3#
“虚拟”大小和常规大小并不神秘,但您应该记住,映像有中间映像或“缓存”(如果您愿意)。因此,映像的虚拟大小是您看到的:
并且图像的图像磁盘大小是与此图像关联的所有缓存图像的总和,您可以看到: