此问题在此处已有答案:
Understanding docker layers and future changes(1个答案)
两年前关闭了。
我知道每个容器都是一个镜像,在一堆只读层之上有一个可读/可写层,多个容器可以共享镜像的只读层。从同一个基础镜像创建的两个镜像是否共享它们相同的镜像?
示例:
- 图像A有5层,重1GB。
- 图像B是以A作为基础图像创建的,并添加了另一层,重1.1GB。
- 图像C是以A作为基础图像创建的,并添加了另一层,重1.5GB
现在的总磁盘空间是3.6GB还是1.6GB?
1条答案
按热度按时间mdfafbf11#
简短回答:
1.6GB
你可以做一个有趣的实验:
拉虚拟图像:
为 * 子映像 *
alpine
准备一个Dockerfile(这里我使用dd
在映像中创建了一个10 MB的文件)构建子映像
然后检查两个图像并查看图层。
请注意,基本阿尔卑斯山图像(
...d93b/diff
)的UpperDir
看起来是派生图像alpine-plus-ten-mb
的LowerDir
。一个重要方面:层
...d93b/diff
对于子图像alpine-plus-ten-mb
是只读的。换句话说,该层保证是不可变的,这允许其他派生图像重用它并在其上构建自己的增量,而无需复制(创建副本)它。这是我在构建子映像时用
dd
人为添加的~ 10 MB delta。