如何解决Kaniko 和 BuildKit/Buildx 有什么区别?
据我所知:
我可以收集到的差异:
我不清楚的是这两组工具之间的重叠程度以及何时应该使用一个而不是另一个。例如,这两种工具似乎都很好地涵盖了在 Kubernetes 集群上自托管远程映像构建农场的用例。
解决方法
尽管功能重叠,但主要区别如下:
╔══════════════════════════════╦════════════╦═════════╗
║ ║ BuildKit ║ Kaniko ║
╠══════════════════════════════╬════════════╬═════════╣
║ build with no docker daemon² ║ ║ ✔ ║
║ build multi-architecture³ ║ ✔ ║ ║
║ remote layer caching⁴ ║ ✔ ║ ✔ ║
║ local layer caching⁵ ║ ✔ ║ ║
╚══════════════════════════════╩════════════╩═════════╝
² Kaniko 和 BuildKit 都可以运行 daemonless 和 rootless,尽管 Kaniko 实际上更容易从非根容器中构建容器。 BuildKit,因为你可以通过 buildx 与它交互,需要一个 docker 守护进程。 https://github.com/GoogleContainerTools/kaniko#how-does-kaniko-work
³ Kaniko 在撰写本文时不支持多架构构建。 https://docs.docker.com/desktop/multi-arch/#build-multi-arch-images-with-buildx
⁴ BuildKit 和 Kaniko 支持基于注册表的缓存。但是,BuildKit 要求注册中心支持缓存 manifest lists。
⁵ BuildKit 支持多个 --cache-to
选项,包括本地文件系统。 https://docs.docker.com/engine/reference/commandline/buildx_build/#cache-to
通常,您的构建环境或平台的限制/功能会决定哪种工具最合适,如果您有两种选择,速度可能会帮助您做出决定(尽管这应该进行彻底的基准测试)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。