Google開源其Java容器化工具Jib,簡化鏡像構建全流程

Google開源其Java容器化工具Jib,簡化鏡像構建全流程

作者|Appu Goundan、Qingyang Chen

容器的出現讓 Java開發人員比以往任何時候都更接近“編寫一次,到處運行”的工作流程,但要對 Java應用程序進行容器化並非易事:你必須編寫 Dockerfile,以 root身份運行 Docker守護進程,等待構建完成,最後將鏡像推送到遠程註冊中心。但並非所有的 Java開發人員都是容器專家,像以前那樣只需要構建一個 JAR包的日子已經結束了嗎?

為了應對這一挑戰,谷歌開源了一個 Java容器化工具 Jib,有了這個工具,Java開發人員可以使用他們熟悉的 Java工具來構建容器。Jib是一個快速而簡單的容器鏡像構建工具,它負責處理將應用程序打包到容器鏡像中所需的所有步驟。它不需要你編寫 Dockerfile或安裝 Docker,而且可以直接集成到 Maven和 Gradle中——只需要將插件添加到構建中,就可以立即將 Java應用程序容器化。

Docker構建流程:

Google開源其Java容器化工具Jib,簡化鏡像構建全流程

Jib構建流程:

Google開源其Java容器化工具Jib,簡化鏡像構建全流程

Jib如何讓開發變得更美好

Jib利用了 Docker鏡像的分層機制,將其與構建系統集成,並通過以下方式優化 Java容器鏡像的構建:

  1. 簡單——Jib使用 Java開發,並作為 Maven或 Gradle的一部分運行。你不需要編寫 Dockerfile或運行 Docker守護進程,甚至無需創建包含所有依賴的大 JAR包。因為 Jib與 Java構建過程緊密集成,所以它可以訪問到打包應用程序所需的所有信息。在後續的容器構建期間,它將自動選擇 Java構建過的任何變體。
  2. 快速——Jib利用鏡像分層和註冊表緩存來實現快速、增量的構建。它讀取你的構建配置,將你的應用程序組織到不同的層(依賴項、資源、類)中,並只重新構建和推送發生變更的層。在項目進行快速迭代時,Jib只講發生變更的層(而不是整個應用程序)推送到註冊表來節省寶貴的構建時間。
  3. 可重現——Jib支持根據 Maven和 Gradle的構建元數據進行聲明式的容器鏡像構建,因此,只要輸入保持不變,就可以通過配置重複創建相同的鏡像。

如何使用 Jib來容器化你的應用程序

Jib可作為 Maven和 Gradle的插件使用,並且只需要做出最少的配置。只需將插件添加到構建定義中並配置目標鏡像即可。如果要將鏡像推送到私有註冊中心,要為 Jib配置所需的秘鑰。最簡單的方法是使用 docker-credential-gcr之類的憑證助手。Jib還提供了其他的一些規則,用於將鏡像構建到 Docker守護進程。

在 Maven 中使用 Jib:

Google開源其Java容器化工具Jib,簡化鏡像構建全流程

Google開源其Java容器化工具Jib,簡化鏡像構建全流程

在 Gradle 中使用 Jib:

Google開源其Java容器化工具Jib,簡化鏡像構建全流程

Google開源其Java容器化工具Jib,簡化鏡像構建全流程

Jib項目地址:

github.com/GoogleContainerTools/jib


分享到:


相關文章: