hashicorp packer与linuxkit之间的区别

mch*_*wre 9 packer docker

我使用hashicorp打包器来构建烘焙的VM映像.

但是想知道linuxkit也做同样的事情,我的意思是建立烘焙的VM图像,唯一的区别是更多的容器和内核中心.

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

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

dei*_*tch 17

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

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

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

LinuxKit 在容器中运行几乎所有东西 - onboot进程和连续services.甚至init通过从OCI映像复制文件来配置OS映像将被引导的阶段.

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

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

  1. LKT建立从无到有到你需要的最低限度; 数据包来自现有的操作系​​统基础.
  2. lkt的安全攻击面会更小,因为它不是从现有的操作系​​统开始,而是没有任何东西.
  3. lkt图像可以显着缩小,因为您只需要精确添加所需内容.
  4. lkt build在本地运行.Packer实际上会旋转VM(vbox,EC2,无论如何),运行一些基本映像,根据您的指令修改它,然后将其保存为新映像.lkt只需通过下载和复制文件来操作OCI图像以创建新图像.

我可以得到与Packer和LinuxKit差异1-3相同的净结果,尽管lkt工作要少得多.例如,我将getty包提供给LinuxKit,以分离和控制何时/如何启动getty以及在哪个命名空间中.在完整操作系统上构建的打包器映像中分离和控制它的工作量要困难得多.对于tpm包也是如此.等等.

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

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

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

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