我使用HashiCorp Packer来构建虚拟机镜像。
但是我想知道LinuxKit是否也可以做同样的事情,我的意思是构建烤制的虚拟机镜像,唯一的区别在于更加容器化和内核中心化。
想要了解这两者工作方式的确切区别和使用情况。
同时,是否可以使用packer和linuxkit进行任何用途。
我使用HashiCorp Packer来构建虚拟机镜像。
但是我想知道LinuxKit是否也可以做同样的事情,我的意思是构建烤制的虚拟机镜像,唯一的区别在于更加容器化和内核中心化。
想要了解这两者工作方式的确切区别和使用情况。
同时,是否可以使用packer和linuxkit进行任何用途。
我广泛使用过两者(声明:我是LinuxKit的志愿维护者)。我使用Packer很长一段时间,几乎把我在Packer中做的所有工作都转移到了LinuxKit(lkt
)中。
原则上两者都是开源工具,用于生成可以运行的操作系统映像。实际上,大多数人使用它来生成可以在vbox、AWS、Azure、GCR等虚拟机环境中运行的映像,但也可以生成在裸机上运行的映像,这也是我所做的。
Packer因为出现较早,具有更广泛的配置器、构建器、插件等。它试图尽可能不持有任何特定观点,在任何地方构建,运行您想要的任何安装程序。
LinuxKit几乎将所有的进程和连续服务services
都运行在容器中,即使在启动操作系统映像的init
阶段也是通过从OCI镜像中复制文件进行配置。
LinuxKit对如何运行和构建事物的强烈观点在某些方面可能会限制,但也是解放的。
我认为最重要的区别如下:
我可以使用Packer和LinuxKit获得1-3差异的相同结果,尽管lkt要少得多。例如,我为LinuxKit贡献了getty
软件包,以便在哪个名称空间中分离和控制启动getty的时间/方式。在构建完整的操作系统上的packer镜像中分离和控制这一点所需的工作量将更大。tpm软件包也是如此,等等。
但是,在我看来,最大的区别在于第4步。因为Packer启动了虚拟机并在其中运行命令,所以速度慢得多,调试起来也更加困难。在lkt中,我可以在30秒内构建完成一个需要我在Packer中花费10多分钟才能构建完成的相同packer镜像。取决于是否下载OCI映像以及您正在进行的操作的复杂程度,您的情况可能有所不同,但对我而言,它确实快了一个数量级。
同样地,逐步调试或查找错误,在远程VM中运行的过程比在本地命令lkt build
中更加困难:
正如我所说,这些都是我的个人意见,但那就是我将几乎所有的构建工作转移到了lkt的原因,并且在团队要求我加入优秀的维护人员之一时,我表示同意。
同时,我非常感激HashiCorp提供的出色工具集。Packer为我服务得很好,现在LinuxKit对我来说更好了。
lkt build
是用来生成可以共享的QEMU虚拟机镜像吗?还是因为假设了特殊的UEFI固件等原因,它们总是依赖于lkt run
? - undefined