hashicorp打包器与linuxkit的区别

我已经使用hashicorp打包器来构build烘焙的虚拟机映像。

但是也想知道linuxkit也做同样的东西,我的意思是build立烘焙的虚拟机映像,唯一的区别是更多的容器和核心中心。

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

也可以有使用packer和linuxkit的任何用例。

我已经使用了相当广泛的(披露:我是LinuxKit的志愿者维护者)。 我用了很长一段时间的打包机,几乎把我在打包机上做的所有工作都转到了LinuxKit( lkt )。

原则上两者都是开源工具,可以达到同样的目的:生成可以运行的操作系统映像。 实际上,大多数用于虚拟机映像在vbox,AWS,Azure,GCR等上运行,但是您可以生成一个裸机上运行的映像,我也这样做了。

年纪较大的派克拥有更广泛的供应商,build设者,插件等。它试图build立起相当广泛和非个人的见解。 build立到处,运行你想要的任何安装。

LinuxKit在一个容器中运行几乎所有的 – onboot进程和连续的services 。 即使是init阶段(OS映像将被引导),也可以通过复制OCI映像中的文件进行configuration。

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

我认为最重要的差异是:

  1. lkt从头开始build立起你所需要的最低限度; 数据包现有的OS基础构build。
  2. lkt的安全攻击面会更小,因为它不是从现有的操作系​​统开始的,而是没有任何东西。
  3. lkt图像可以显着缩小,因为你只能精确地添加你需要的东西。
  4. lkt构build在本地运行。 Packer实质上是一个虚拟机(vbox,EC2),运行一些基本映像,根据你的指令修改它,然后把它保存为一个新的映像。 lkt只是通过下载和复制文件来创build一个新的图像操纵OCI图像。

我可以得到与Packer和LinuxKit差异1-3的相同的净结果,虽然lkt是less得多的工作。 例如,我将getty软件包贡献给LinuxKit,以分离和控制何时/如何启动getty,以及在哪个命名空间中。 在一个完整的操作系统上构build的打包器镜像中分离和控制的工作量要困难得多。 同样的tpm包。 等等。

然而,IMO最大的不同在于步骤4.因为Packer启动了一个虚拟机并在其中运行命令,所以debugging速度慢得多,而且更难debugging。 同样的打包机镜像,需要我10分钟才能打造,可以在30秒内完成。 您的里程可能会有所不同,具体取决于OCI图像是否被下载,以及您所做的事情有多复杂,但对我来说确实快了一个数量级。

同样,在远程虚拟机中运行的进程中,一步一步debugging或者发现错误,运行,debugging和重新lkt build远比在本地命令中运行更为困难: lkt build

正如我所说,意见是我自己的,但这些都是我把所有的构build工作都搬到了这个地方,贡献了自己的理由,并且在团队要求的时候同意join这个优秀的维护团队。

与此同时,我非常感谢HashiCorp的出色工具。 派克给我很好的服务; 如今,LinuxKit更好地服务于我。