发布于 2021-07-15 14:31:32
尽管有重叠的特点,但主要的区别是:
╔══════════════════════════════╦════════════╦═════════╗
║ ║ BuildKit ║ Kaniko ║
╠══════════════════════════════╬════════════╬═════════╣
║ build with no root or daemon²║ ✔ ║ ✔ ║
║ build multi-architecture³ ║ ✔ ║ ║
║ remote layer caching⁴ ║ ✔ ║ ✔ ║
║ local layer caching⁵ ║ ✔ ║ ║
╚══════════════════════════════╩════════════╩═════════╝Kaniko和BuildKit都可以运行无守护和无根,但实际上,在我看来,Kaniko更容易在非根容器中构建容器。Kaniko “生成为非特权环境中容器中的根用户”,但不需要根程序或守护进程。当通过BuildKit公开时,BuildKit需要一个特权的停靠守护进程,但是BuildKit不需要它的独立形式的守护进程或根权限(带有一些工具,比如RootlessKit)。
Kaniko在撰写本文时不支持多体系结构构建。https://docs.docker.com/desktop/multi-arch/#build-multi-arch-images-with-buildx
BuildKit和⁴支持基于注册表的缓存。然而,BuildKit要求注册中心支持缓存清单。
BuildKit支持多个--cache-to选项,包括本地文件系统。构建/#缓存-到
通常,构建环境或平台的约束/特性将决定哪种工具最合适,如果两者兼备,速度可能会帮助您做出决定(尽管这应该被彻底基准化)。
https://stackoverflow.com/questions/67495607
复制相似问题