傳統(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>