传统对 Java 应用程序进行容器化并非易事:你必须编写 Dockerfile,以 root 身份运行 Docker 守护进程,等待构建完成,最后将镜像推送到远程注册中心。
[注意]这只是针对纯粹的Java程序,如果你还要安装一些其它的依赖包,修改脚本等,就不合适了。
Docker 构建流程:
Jib 构建流程:
将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>-->
<!--目标镜像registry地址,为了方便测试,你需要换成自己的地址,如果你的网络不好,可以选用国内加速器,比如阿里云的-->
<image>registry.hub.docker.com/moxingwang/jibtest</image>
</to>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
这只是一个最简单的配置,比如registry认证配置,jvm配置等等,可以参考github jib详细说明jib/jib-maven-plugin/。
构建你的镜像
mvn compile jib:build
把镜像直接构建到本地docker中
使用这种构建方式,首先你要确保本已经安装docker并且环境变量都配置正确,因为这种方式jib依赖docker 命令执行,你还需要保证已经启动服务(在terminal中执行 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>