Docker'Union FS:层/命令的重新排序

时间:2019-01-28 12:36:01

标签: docker

例如,我有两个要安装的映像,它们都来自同一基本映像(例如ubuntu),但是它们以不同的顺序安装了依赖项(例如,第一个映像先安装java,然后安装python,第二个安装python,然后安装java)。

  • 除了ubuntu图像之外,还会重复使用其他任何东西吗,或者它将两次存储依赖关系,即在其联合FS中两次为该依赖关系存储相同的大文件?
  • 如果否,那么如果这些依赖项不影响相同的文件/环境变量,从而形成相同的文件系统快照,而不管命令的顺序如何,将重用该层吗?

1 个答案:

答案 0 :(得分:1)

共享层的标准是在完全相同的基本层上运行完全相同的命令。因此,在您描述的情况下,将没有层共享(基本的ubuntu层除外)。

如果您真的经常需要在同一张图片中使用多种语言,则可以创建自己的基础层,将Ubuntu,Java和Python结合在一起。让您的CI系统进行构建并将其推送到某个存储库,然后FROM在该层构建您的多语言应用程序映像。这将简化您的Dockerfile,并在某种程度上提高磁盘利用率。