例如,我有两个要安装的映像,它们都来自同一基本映像(例如ubuntu
),但是它们以不同的顺序安装了依赖项(例如,第一个映像先安装java
,然后安装python
,第二个安装python
,然后安装java
)。
ubuntu
图像之外,还会重复使用其他任何东西吗,或者它将两次存储依赖关系,即在其联合FS中两次为该依赖关系存储相同的大文件?答案 0 :(得分:1)
共享层的标准是在完全相同的基本层上运行完全相同的命令。因此,在您描述的情况下,将没有层共享(基本的ubuntu
层除外)。
如果您真的经常需要在同一张图片中使用多种语言,则可以创建自己的基础层,将Ubuntu,Java和Python结合在一起。让您的CI系统进行构建并将其推送到某个存储库,然后FROM
在该层构建您的多语言应用程序映像。这将简化您的Dockerfile,并在某种程度上提高磁盘利用率。