hashicorp packer与linuxkit之间的区别

时间:2017-12-14 11:48:40

标签: docker packer

我使用hashicorp packer来构建已烘焙的VM映像。

但是想知道linuxkit我也想做同样的事情,我的意思是构建出色的虚拟机映像,唯一的区别就是更多的容器和内核中心。

想知道这两者的工作与用例之间的确切区别。

也可以使用packer和linuxkit。

1 个答案:

答案 0 :(得分:15)

我已经相当广泛地使用了两者(披露:我是LinuxKit的志愿者维护者)。我使用了打包机很长一段时间,并将我在打包机中完成的几乎所有工作都转换为LinuxKit(lkt)。

原则上,两者都是开源工具,用于同一目的:生成可运行的操作系统映像。实际上,大多数使用它来在VM映像上运行vbox,AWS,Azure,GCR等,但是你可以生成一个可以在裸机上运行的映像,我也做过。

Packer,年纪较大,拥有更多的供应商,构建者,插件等。它试图相当广泛,没有自我意见。为所有地方构建,运行您想要的任何安装。

LinuxKit在容器中运行几乎所有内容 - onboot进程和连续services。甚至通过从OCI映像复制文件来配置将引导操作系统映像的init阶段。

LinuxKit关于如何运行和构建东西的强烈意见在某些方面可能是限制性的,但也是解放的。

在我看来,最重要的差异如下:

  1. lkt从头开始构建 up 到您需要的最低限度;数据包从现有操作系统基础构建
  2. lkt的安全攻击面会更小,因为它不是从现有的操作系​​统开始,而是没有任何东西。
  3. lkt图像可以显着缩小,因为您只能准确添加所需内容。
  4. lkt build在本地运行。 Packer实际上会旋转VM(vbox,EC2,无论如何),运行一些基本映像,根据您的指令修改它,然后将其保存为新映像。 lkt只需通过下载和复制文件来操作OCI图像以创建新图像。
  5. 我可以得到与Packer和LinuxKit的差异1-3相同的净结果,尽管lkt工作要少得多。例如。我向LinuxKit贡献了getty包来分离和控制何时/如何启动getty以及在哪个命名空间中。在完整操作系统上构建的打包器映像中分离和控制它的工作量要困难得多。对于tpm包也是如此。等

    然而,IMO最大的不同之处在于第4步。因为Packer启动了一个虚拟机并在其中运行命令,所以调试起来要慢得多,也要难得多。使用10分钟以上的同一个封隔器图像可以在1kt内完成30秒。您的里程可能会有所不同,具体取决于是否下载了OCI图像,以及您正在做的事情有多复杂,但实际上我的速度确实快了一个数量级。

    同样,在远程VM中运行的进程比在本地命令中运行,进程调试或查找错误,运行,调试和重建要困难得多:lkt build

    正如我所说,意见是我自己的意见,但这些是我将几乎所有的构建工作转移到lkt,贡献并同意在团队提出要求时加入优秀维护者团队的原因。

    与此同时,我非常感谢HashiCorp的精彩工具集。帕克为我服务很好;如今,LinuxKit更好地为我服务。