弹簧靴的区别是什么:构建镜像和jib



Spring Boot 2.3.x增加了通过Spring Boot:build image使用插件构建Docker镜像的功能。Jib似乎允许相同的功能,但并不局限于Spring引导。

Spring Boot应用程序是否有任何特定的优化,而jib没有提供(这就是为什么有一个Spring Boot插件的原因?(

除了无法将启动映像与专用注册表一起使用之外。

Jib和Spring Boot的映像构建之间的主要区别在于后者使用Buildpacks来创建映像。buildpacks.io上有一个比较表,列出了一些最显著的差异。

这是主观的,但重新调整基础的支持可能是最显著的。重新调整映像可以使包含应用程序代码的一个或多个层重新基于新的操作系统或JVM层,而无需重新构建应用程序。这使得操作系统和JVM安全更新的应用速度远远快于为了使用更新而必须重建每个应用程序及其整个映像的情况。

我们希望Jib能很好地与所有框架一起工作,我们对spring-boot的持续支持是当务之急。如果你喜欢jib并希望继续使用它,你应该看不到性能上的差异。事实上,spring团队已经在spring-boot工具中添加了一些配置,可以帮助各地的容器构建者构建更好的容器。

除此之外,Jib可以在任何地方运行,您不需要容器运行时,也不需要构建包服务,只要您有源代码和构建文件,就可以创建容器。

是的,rebase很有价值,但与buildpacks.io关于buildpacks为什么是最好的进行比较,显然背后会有一点营销魔法。rebase因为容器的构建方式而流畅而简单。开始理解它的一个有用的方法是以艰难的方式构建容器。在Buildpacks和Jib中,rebase如何工作的区别如下(我认为主要是(:

  • 构建包:构建包基本映像是在堆栈中定义的,如果您选择使用构建包,您将使用;运行图像";在构建包的堆栈中提供。如果你想更新你的基本映像,那只能在构建包所有者更新了堆栈的";运行图像";(编辑:看起来这可能不是真的,用户可以使用自己的"运行图像",但我认为这有点扰乱了工作流程?(。然后运行rebase将更新您的图像。如果这适合您的组织工作流程,效果会很好。如果你想控制更新你的图像,那么你就要靠上游来做
  • Jib:在Jib中,虽然有一个默认的基本图像,但应用程序所基于的图像的选择取决于您。你可以随意更新。更新您的基本映像就像更改基本映像和运行构建一样简单。由于Jib是如何处理跨系统的缓存和再现性的,所以您不应该遇到任何额外的成本,其结果与包重基准相同。这里的优点是你不受构建包所有者的摆布

我认为在Andy和loosebazooka的回答中缺少(或不够清楚(的一个重要方面是Spring Boots"创建图像";确实需要Docker Deamon才能构建。传统上,创建docker镜像构建将调用一个命令;docker构建&";。创建映像执行类似的操作,因此需要本地安装或远程安装Docker(使用Docker_HOST设置(。

JIB没有这个限制,这对您的构建服务器来说可能是一个优势。

最新更新