簡體   English   中英

spring-boot:build-image 與 jib 有什么區別?

[英]What is the difference between spring-boot:build-image vs jib?

Spring Boot 2.3.x 添加了通過 spring-boot:build-image 使用其插件構建 Docker 鏡像的功能。 Jib 似乎允許相同的功能,但不限於 Spring boot。

Spring Boot 應用程序利用該 jib 是否有任何特定的優化沒有提供(這就是為什么有一個 Spring Boot 插件的原因?)

除了無法使用帶有私有注冊表的啟動映像

Jib 和 Spring Boot 的鏡像構建的主要區別在於后者使用Buildpacks來創建鏡像。 buildpacks.io上有一個比較表,列出了一些最顯着的差異。

這是主觀的,但 rebase 支持可能是最值得注意的。 Rebase 鏡像允許包含應用程序代碼的層重新基於新的操作系統或 JVM 層,而無需重新構建應用程序。 與必須重建每個應用程序及其整個映像以使用更新相比,這允許應用操作系統和 JVM 安全更新的速度要快得多。

我們希望 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 處理跨系統緩存和再現性的方式,您不應該遇到任何額外成本,結果與包 rebase 相同。 這里的優點是您不受 buildpack 所有者的支配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM