微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kaniko 和 BuildKit/Buildx 有什么区别?

如何解决Kaniko 和 BuildKit/Buildx 有什么区别?

据我所知:

  • 它们都是构建容器镜像的工具
  • 构建本身在容器中运行
  • 构建可以在远程节点上进行,例如在 Kubernetes 集群 (Kaniko,BuildKit) 中
  • 它们都提供高级功能,例如层缓存

我可以收集到的差异:

  • 安全模型 (Kaniko)
  • BuildKit 利用了最近的开发成果,例如缓存清单和清单列表
  • BuildKit 支持多种架构

我不清楚的是这两组工具之间的重叠程度以及何时应该使用一个而不是另一个。例如,这两种工具似乎都很好地涵盖了在 Kubernetes 集群上自托管远程映像构建农场的用例。

解决方法

尽管功能重叠,但主要区别如下:

╔══════════════════════════════╦════════════╦═════════╗
║                              ║ BuildKit   ║ Kaniko  ║
╠══════════════════════════════╬════════════╬═════════╣
║ build with no docker daemon² ║            ║ ✔       ║
║ build multi-architecture³    ║ ✔          ║         ║
║ remote layer caching⁴        ║ ✔          ║ ✔       ║
║ local layer caching⁵         ║ ✔          ║         ║
╚══════════════════════════════╩════════════╩═════════╝

² Kaniko 和 BuildKit 都可以运行 daemonlessrootless,尽管 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?