轉載:https://blog.csdn.net/u012562943/article/details/80995373html
1、前言git
容器的出現讓Java開發人員比以往任什麼時候候都更接近「編寫一次,處處運行」的工做流程,但要對Java應用程序進行容器化並不是易事:你必須編寫Dockerfile,以root身份運行Docker守護進程,等待構建完成,最後將鏡像推送到遠程註冊中心。但並不是全部的Java開發人員都是容器專家,像之前那樣只須要構建一個JAR包的日子已經結束了嗎?爲了應對這一挑戰,谷歌開源了一個Java容器化工具Jib,有了這個工具,Java開發人員可使用他們熟悉的Java工具來構建容器。Jib是一個快速而簡單的容器鏡像構建工具,它負責處理將應用程序打包到容器鏡像中所需的全部步驟。它不須要你編寫Dockerfile或安裝Docker,並且能夠直接集成到Maven中,只須要將插件添加到構建中,就能夠當即將 Java應用程序容器化。github
2、Docker構建流程:docker
3、Jib構建流程:緩存
4、Jib如何讓開發變得更美好
Jib利用了Docker鏡像的分層機制,將其與構建系統集成,並經過如下方式優化 Java容器鏡像的構建
簡單——Jib使用Java開發,並做爲Maven的一部分運行。你不須要編寫Dockerfile或運行Docker守護進程,甚至無需建立包含全部依賴的大JAR包。由於Jib與Java構建過程緊密集成,因此它能夠訪問到打包應用程序所需的全部信息。在後續的容器構建期間,它將自動選擇Java構建過的任何變體。
快速——Jib利用鏡像分層和註冊表緩存來實現快速、增量的構建。它讀取你的構建配置,將你的應用程序組織到不一樣的層(依賴項、資源、類)中,並只從新構建和推送發生變動的層。在項目進行快速迭代時,Jib只講發生變動的層(而不是整個應用程序)推送到註冊表來節省寶貴的構建時間。
可重現——Jib支持根據Maven的構建元數據進行聲明式的容器鏡像構建,所以,只要輸入保持不變,就能夠經過配置重複建立相同的鏡像。
5、如何使用Jib來容器化你的應用程序
Jib可做爲Maven的插件使用,而且只須要作出最少的配置。只需將插件添加到構建定義中並配置目標鏡像便可。若是要將鏡像推送到私有註冊中心,要爲Jib配置所需的祕鑰。最簡單的方法是使用docker-credential-gcr之類的憑證助手。Jib還提供了其餘的一些規則,用於將鏡像構建到 Docker守護進程。
在Maven中使用Jib:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>0.9.0</version>
<configuration>
<to>
<image>gcr.io/my-project/image-built-with-jib</image>
</to>
</configuration>
</plugin>
# Builds to a container image registry.
$ mvn compile jib:build
# Builds to a Docker daemon.
$ mvn compile jib:dockerBuild
Jib項目地址:github.com/GoogleContainerTools/jibmaven