5

Spring Boot 2.3.x 添加了通过 spring-boot:build-image 使用其插件构建 Docker 映像的功能。Jib 似乎允许相同的功能,但不限于 Spring boot。

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

除了无法将引导映像与私有注册表一起使用之外。

4

2 回答 2

10

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

这是主观的,但变基支持可能是最值得注意的。重新定位映像允许包含应用程序代码的一个或多个层在新的操作系统或 JVM 层之上重新定位,而无需重新构建应用程序。与必须重建每个应用程序及其整个映像以使用更新相比,这允许应用操作系统和 JVM 安全更新的速度要快得多。

于 2020-09-24T15:55:01.220 回答
6

我们希望 Jib 能够很好地与所有框架配合使用,并且我们对 spring-boot 的持续支持是我们的重中之重。如果您喜欢 jib 并且希望继续使用它,您应该会发现性能没有差异。事实上,spring 团队已经在 spring boot 工具中添加了一些配置,可以帮助各地的容器构建者构建更好的容器。

除此之外,Jib 被设计为在任何地方运行,你不需要容器运行时,你不需要 buildpacks 服务,只要你有源代码和构建文件,你就可以创建一个容器。

是的,rebase 很有价值,但是在buildpacks .io 上比较为什么buildpacks是最好的,显然背后会有一点营销魔力。由于容器的构建方式,Rebase既流畅又容易。开始理解它的一个有用方法是构建容器的艰难方式。Buildpacks 与 Jib 中 rebase 工作方式的区别如下(我认为主要是):

  • Buildpacks:buildpacks 基础镜像定义在一个stack中,如果您选择使用 buildpack,您将使用 buildpack 堆栈中提供的“运行镜像”。如果您希望更新您的基本映像,则只能在 buildpack 所有者更新堆栈的“运行映像”后发生(编辑:看起来这可能不是真的,用户可以使用他们自己的“运行映像”但我认为有点混乱工作流程?)。然后运行 ​​rebase 将更新您的图像。如果这适合您的组织工作流程,那么效果很好。如果您希望控制更新您的图像,那么您依赖上游来执行此操作。
  • Jib:在 jib 中,虽然有一个默认的基本映像,但构建应用程序的映像的选择取决于您。你可以随意更新。更新基础镜像就像更改基础镜像和运行构建一样简单。由于 Jib 如何处理跨系统的缓存和再现性,您不应该遇到任何额外的成本,并且结果与 pack rebase 相同。这里的好处是你不受 buildpack 所有者的摆布。
于 2020-09-25T21:06:52.573 回答