关于Jib
Java应用如果要运行在docker环境,就要制作包含该应用的docker镜像,Jib就是用来制作此镜像的的工具,有三种使用Jib的方法:
- Maven插件:jib-maven-plugin;
- Gradle插件:jib-gradle-plugin;
- Java库:Jib Core;
Jib的官网地址是:https://github.com/GoogleContainerTools/jib
今天咱们要聊的是第一种:通过jib的maven插件将java应用构建成docker镜像;
实战环境信息
- 操作系统:CentOS Linux release 7.6.1810
- docker:1.13.1
- jdk:1.8.0_191
- maven:3.6.0
接下来一起开发一个java应用,并使用jib的maven插件,来构建该应用对应的docker镜像;
源码下载
如果您不打算写代码,也可以从GitHub上下载本次实战的源码,地址和链接信息如下表所示:
准备java应用
准备一个最简单的springboot应用hellojib,用于实战构建docker镜像;
- 该应用是基于maven构建的,启动类如下:
- 有一个controller用于后面验证服务是否正常:
- 最重要的部分来了,pom.xml的内容如下,请注意注释:
上述xml中有以下几处需要注意:
a. 插件的节点中增加了插件jib-maven-plugin的配置;
b. from节点用来设置基础镜像,一般使用openjdk官方镜像,如果您想了解更多请参考《openjdk镜像的tag说明》;
c. to节点用于指定镜像名称和tag;
d. container节点用来设置容器的属性,例如对外暴露的端口、jvm参数等;
完成了上述设置,就可以构建镜像了;
构建成tar文件
还记得常用的docker到处到处命令么:
. docker save命令将本地仓库的docker镜像导出成tar格式的文件;
. docker load命令可以将tar格式的镜像文件导入到本地镜像仓库;
利用Jib,我们可以将java应用做成docker镜像并生成tar格式的文件,操作步骤如下:
- 在上述java工程的pom.xml文件所在目录,执行以下命令:
- 构建成功后,控制台提示以下信息:
验证镜像是否可用
- 执行以下命令,即可启动容器:
- 控制台显示springboot的启动信息:
- 先执行命令docker rmi bolingcavalry/hellojib:0.0.1-SNAPSHOT将前面构建的镜像删除;
- 在pom.xml文件所在目录执行以下命令即可:
- 终端提示如下:
- 执行命令docker images可见镜像已经在镜像仓库中了:
构建到hub.docker.com
docker的中央仓库是 hub.docker.com ,jib也可以在镜像构建成功后自动推送到hub.docker.com网站,前提是您已经在该网站注册过,例如我已经注册过,账号是bolingcavalry,因此名为bolingcavalry/XXXXXXXX的镜像都可以推送到 hub.docker.com:
- 在pom.xml文件所在目录执行以下命令即可自动推送到 hub.docker.com,其中bolingcavalry是我在hub.docker.com上的注册账号,123456是密码:
- 终端信息如下: