【发布时间】:2021-01-16 03:09:41
【问题描述】:
在我的团队中,我们目前使用单个 docker 镜像来交叉构建一个 SW 库,我们在一个 docker 镜像 (/opt/...) 中添加了多个交叉构建工具链。 Dockerfile 和工具链都在一个 git 存储库中(通过 git-lfs 归档工具链)。
Dockerfile方便对构建环境有全面的形式化描述,可以在不同的机器上使用。
现在,我们不断从客户那里获得工具链,有时还会获得这些工具链的新版本。 因此,我们的 docker 镜像增长很快,目前使用了大约 40GB。更糟糕的是,如果我们需要添加/修改/删除一个工具链,构建一个新的 docker 镜像所花费的时间。
所以我开始怀疑我们是否以“良好实践”的方式做事。
为每个工具链使用单独的 docker 映像可以节省每次构建巨大的单个 docker 映像的时间。但在空间方面则更糟(因为每个 docker 映像都包含带有构建工具等的 Linux 子系统)。
如果有任何提示可以更好地做到这一点,我会很高兴。
- 是否有任何“既定”的方法来处理这种情况?
- 其他团队如何处理这个用例?
【问题讨论】:
-
如果你的工具链是千兆字节,基本的 Linux 发行版几乎是免费的;此外,如果您构建了多个映像
FROM ubuntu:18.04并将它们全部构建在一起,它们将共享一个基础映像的副本。
标签: docker cross-compiling toolchain