Docker 与 Jib(maven 插件版) 实战
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
关于 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 上下载本次实战的源码,地址和链接信息如下表所示:
这个 git 项目中有多个文件夹,本章的源码在 hellojib 文件夹下,如下图红框所示:
准备 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 文件所在目录,执行以下命令:
构建成功后,控制台提示以下信息:
去 java 工程的 target 目录下,发现生成了名为 jib-image.tar 的文件,如下图红框所示:
在 java 工程的 target 目录下执行命令 docker load < jib-image.tar 即可将该 tar 文件中的镜像加载到本地镜像仓库:
执行命令 docker images 可见镜像加载成功:
可见通过 jib 生成的 tar 是正常的 docker 镜像文件,可以导入
验证镜像是否可用
执行以下命令,即可启动容器:
控制台显示 springboot 的启动信息:
用浏览器访问:http://192.168.121.132:8080/hello ,其中 192.168.121.132 是宿主机 IP 地址,如下图,可见 springboot 服务可以正常访问:
构建到本地镜像仓库
上面的操作是将 java 应用生成 tar 文件然后再导入到本地镜像仓库,您也可以直接将 java 应用构建到本地镜像仓库中:
先执行命令 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 是密码:
终端信息如下:
在 hub.docker.com 上已经可以看到此镜像了,如下图(要登录后再看自己的镜像列表,如果没有登录是无法立即查到的):
至此,Jib 的实战已经完成,常用的操作相信您已经熟悉了,希望本文能帮助您做出满意的镜像;
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/8db1c4b59830de51c41f9ab3f】。文章转载请联系作者。
评论