谷歌開源 Java 鏡像構(gòu)建工具 Jib

傳統(tǒng)對 Java 應(yīng)用程序進行容器化并非易事:你必須編寫 Dockerfile,以 root 身份運行 Docker 守護進程,等待構(gòu)建完成,最后將鏡像推送到遠程注冊中心。

[注意]這只是針對純粹的Java程序,如果你還要安裝一些其它的依賴包,修改腳本等,就不合適了。

Docker 構(gòu)建流程:


image.png

Jib 構(gòu)建流程:


image.png

將java項目容器化push到registries

jib的引入非常簡單,以maven plugin的方式集成到項目中,只需要在你的項目中引入下面代碼即可

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>0.9.6</version>
    <configuration>
        <from>
            <!--base image-->
            <image>openjdk:alpine</image>
        </from>
        <to>
            <!--<image>registry.cn-hangzhou.aliyuncs.com/m65536/jibtest</image>-->
            <!--目標(biāo)鏡像registry地址,為了方便測試,你需要換成自己的地址,如果你的網(wǎng)絡(luò)不好,可以選用國內(nèi)加速器,比如阿里云的-->
            <image>registry.hub.docker.com/moxingwang/jibtest</image>
        </to>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
</plugin>

這只是一個最簡單的配置,比如registry認(rèn)證配置,jvm配置等等,可以參考github jib詳細(xì)說明jib/jib-maven-plugin/。

構(gòu)建你的鏡像

mvn compile jib:build

把鏡像直接構(gòu)建到本地docker中

使用這種構(gòu)建方式,首先你要確保本已經(jīng)安裝docker并且環(huán)境變量都配置正確,因為這種方式j(luò)ib依賴docker 命令執(zhí)行,你還需要保證已經(jīng)啟動服務(wù)(在terminal中執(zhí)行 docker --version 能夠正確返回)。

mvn compile jib:dockerBuild

接下來直接操作,首先查看本地已有images

docker iamges

其它plugin

還有其它 plugin 完成類似功能,比如:

docker-maven-plugin

<plugin>
    <groupId>org.jolokia</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.11.5</version>
...
</plugin>

kubernetes-maven-plugin

<plugin>
    <groupId>org.eclipse.jkube</groupId>
    <artifactId>kubernetes-maven-plugin</artifactId> (4)
    <version>1.12.0</version>
</plugin>

參考

https://juejin.cn/post/6844903639882940423

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容