如何同时实现构建隔离和缓存?

时间:2016-05-17 13:43:28

标签: docker apt package-managers build-system nix

我正在尝试使用像Docker和nix这样的工具来查看是否有一个现代的解决方案来构建环境依赖地狱。

Docker没有知识或能力来缓存在容器内(通常是linux)环境中下载的包;它确实缓存了Dockerfile中每一行的构建的中间部分,但是如果你的膨胀依赖从apt中获取了一半的ubuntu,那么只要你在我们的Dockerfile中更改它上面的任何内容,Docker就会从头开始下载它。

Nix似乎有promising infrastructure来维护依赖树,以及共享/缓存任意数量版本的依赖关系,但是并没有强制实施隔离;默认情况下,进程仍然可以访问整个树;它们的构建只能通过nix树来共享库等。

是否有一些理智的方法将nix和Docker(或其他一些现有工具)的优点结合起来,同时缓存二进制文件和封装工作?

一些想法:

  • Docker +本地ubuntu镜像+ btrfs实现缓存?
  • nix + chroot带有一个标志以保持nix数据库共享?

请注意,我对某些语言/生态系统不可知感兴趣,并且对开源库有很好的了解。

0 个答案:

没有答案