jib 使用教程
原文鏈接:https://blog.csdn.net/boling_cavalry/article/details/94355659
參考鏈接: https://blog.csdn.net/boling_cavalry/article/details/100179709
主要的命令:
<!--打包 jib-image.tar 文件-->
mvn compile jib:buildTar
<!--加載到本地docker 鏡像中 -->
docker load < target/jib-image.tar
<!--查看鏡像列表-->
docker images
docker rm containerId
docker rmi imageId
<!-- 清理 none 鏡像 -->
docker image prune
<!--構(gòu)建到倉庫中-->
mvn compile jib:build -Djib.to.auth.username=bolingcavalry -Djib.to.auth.password=123456
添加maven插件
<!--使用jib插件-->
<plugin>
<!-- https://mvnrepository.com/artifact/com.google.cloud.tools/jib-maven-plugin -->
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.6.1</version>
<configuration>
<!--from節(jié)點用來設置鏡像的基礎鏡像,相當于Docerkfile中的FROM關(guān)鍵字-->
<from>
<!--使用openjdk官方鏡像-->
<image>openjdk:alpine</image>
</from>
<to>
<!--鏡像名稱和tag,使用了mvn內(nèi)置變量${project.version},表示當前工程的version-->
<!-- <image>helloworld/alfred:jibtest:${project.version}</image>-->
<image>helloworld/alfred:jibtest</image>
</to>
<!--容器相關(guān)的屬性-->
<container>
<!--jvm內(nèi)存參數(shù)-->
<jvmFlags>
<jvmFlag>-Xms4g</jvmFlag>
<jvmFlag>-Xmx4g</jvmFlag>
</jvmFlags>
<!--要暴露的端口-->
<ports>
<port>8083</port>
</ports>
<creationTime>USE_CURRENT_TIMESTAMP</creationTime>
</container>
</configuration>
</plugin>
a. from節(jié)點用來設置基礎鏡像,一般使用openjdk官方鏡像,如果您想了解更多請參考《openjdk鏡像的tag說明》;
c. to節(jié)點用于指定鏡像名稱和tag;
d. container節(jié)點用來設置容器的屬性,例如對外暴露的端口、jvm參數(shù)等;
利用Jib,我們可以將java應用做成docker鏡像并生成tar格式的文件,操作步驟如下:
在上述java工程的pom.xml文件所在目錄,執(zhí)行以下命令:
mvn compile jib:buildTar
2 構(gòu)建成功后,控制臺提示以下信息:
[root@kylo-2 hellojib]# mvn compile jib:buildTar
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.guan.demo:hellojib >-----------------------
[INFO] Building hellojib 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ hellojib ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ hellojib ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /apps/my_test2019/hellojib/target/classes
[INFO]
[INFO] --- jib-maven-plugin:1.6.1:buildTar (default-cli) @ hellojib ---
[WARNING] Setting image creation time to current time; your image may not be reproducible.
[INFO]
[INFO] Containerizing application to file at '/apps/my_test2019/hellojib/target/jib-image.tar'...
[INFO] The base image requires auth. Trying again for openjdk:alpine...
[INFO]
[INFO] Container entrypoint set to [java, -Xms4g, -Xmx4g, -cp, /app/resources:/app/classes:/app/libs/*, com.Application]
[INFO]
[INFO] Built image tarball at /apps/my_test2019/hellojib/target/jib-image.tar
[INFO] Executing tasks:
[INFO] [==============================] 100.0% complete
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.892 s
[INFO] Finished at: 2019-11-19T13:13:18+08:00
[INFO] ------------------------------------------------------------------------
在java工程的target目錄下,發(fā)現(xiàn)生成了名為jib-image.tar的文件,
在java工程的target目錄下執(zhí)行命令docker load < jib-image.tar即可將該tar文件中的鏡像加載到本地鏡像倉庫:
[root@kylo-2 hellojib]# docker load < target/jib-image.tar
73046094a9b8: Loading layer [==================================================>] 2.207MB/2.207MB
298c3bb2664f: Loading layer [==================================================>] 239B/239B
93351e248e6e: Loading layer [==================================================>] 70.58MB/70.58MB
64c0b8425948: Loading layer [==================================================>] 14.91MB/14.91MB
9789a0aea7b2: Loading layer [==================================================>] 208B/208B
52de304c5a37: Loading layer [==================================================>] 985B/985B
Loaded image: guanpeizuo/alfred:jibtest
執(zhí)行命令docker images可見鏡像加載成功:
[root@kylo-2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
helloworld/alfred jibtest eaa495b99508 11 minutes ago 119MB
openjdk 8-jdk-slim 971671e78456 4 weeks ago 284MB
openjdk 8-jdk-alpine a3562aa0b991 6 months ago 105MB
registry latest f32a97de94e1 8 months ago 25.8MB
elasticsearch 6.4.3 01e5bee1e059 12 months ago 795MB
ascdc/jdk8 latest 9f04bbc44406 18 months ago 644MB
[root@kylo-2 ~]#
可見通過jib生成的tar是正常的docker鏡像文件,可以導入
驗證鏡像是否可用
執(zhí)行以下命令,即可啟動容器:
docker run --rm -p 8080:8080 bolingcavalry/hellojib:0.0.1-SNAPSHOT
控制臺顯示springboot的啟動信息
構(gòu)建到本地鏡像倉庫
上面的操作是將java應用生成tar文件然后再導入到本地鏡像倉庫,您也可以直接將java應用構(gòu)建到本地鏡像倉庫中:
先執(zhí)行命令docker rmi bolingcavalry/hellojib:0.0.1-SNAPSHOT將前面構(gòu)建的鏡像刪除;
在pom.xml文件所在目錄執(zhí)行以下命令即可:
mvn clean compile jib:dockerBuild -U
終端提示如下:
[root@centos7 hellojib]# mvn clean compile jib:dockerBuild -U
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------< com.bolingcavalry:hellojib >---------------------
[INFO] Building hellojib 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ hellojib ---
[INFO] Deleting /root/temp/201906/29/hellojib/target
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ hellojib ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ hellojib ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /root/temp/201906/29/hellojib/target/classes
[INFO]
[INFO] --- jib-maven-plugin:1.3.0:dockerBuild (default-cli) @ hellojib ---
[INFO]
[INFO] Containerizing application to Docker daemon as bolingcavalry/hellojib:0.0.1-SNAPSHOT...
[INFO] The base image requires auth. Trying again for openjdk:8-jdk-stretch...
[INFO]
[INFO] Container entrypoint set to [java, -Xms4g, -Xmx4g, -cp, /app/resources:/app/classes:/app/libs/*, com.bolingcavalry.hellojib.HellojibApplication]
[INFO]
[INFO] Built image to Docker daemon as bolingcavalry/hellojib:0.0.1-SNAPSHOT
[INFO] Executing tasks:
[INFO] [==============================] 100.0% complete
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20.923 s
[INFO] Finished at: 2019-06-30T22:04:36+08:00
[INFO] ------------------------------------------------------------------------
執(zhí)行命令docker images可見鏡像已經(jīng)在鏡像倉庫中了:
[root@centos7 hellojib]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
bolingcavalry/hellojib 0.0.1-SNAPSHOT cf93bd81fbd5 49 years ago 505 MB
構(gòu)建到hub.docker.com
docker的中央倉庫是 hub.docker.com ,jib也可以在鏡像構(gòu)建成功后自動推送到hub.docker.com網(wǎng)站,前提是您已經(jīng)在該網(wǎng)站注冊過,例如我已經(jīng)注冊過,賬號是bolingcavalry,因此名為bolingcavalry/XXXXXXXX的鏡像都可以推送到 hub.docker.com:
在pom.xml文件所在目錄執(zhí)行以下命令即可自動推送到 hub.docker.com,其中bolingcavalry是我在hub.docker.com上的注冊賬號,123456是密碼:
mvn compile jib:build -Djib.to.auth.username=bolingcavalry -Djib.to.auth.password=123456
終端信息如下:
[root@centos7 hellojib]# mvn compile jib:build -Djib.to.auth.username=bolingcavalry -Djib.to.auth.password=123456
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------< com.bolingcavalry:hellojib >---------------------
[INFO] Building hellojib 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ hellojib ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ hellojib ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- jib-maven-plugin:1.3.0:build (default-cli) @ hellojib ---
[INFO]
[INFO] Containerizing application to bolingcavalry/hellojib:0.0.1-SNAPSHOT...
[INFO] The base image requires auth. Trying again for openjdk:8-jdk-stretch...
[INFO]
[INFO] Container entrypoint set to [java, -Xms4g, -Xmx4g, -cp, /app/resources:/app/classes:/app/libs/*, com.bolingcavalry.hellojib.HellojibApplication]
[INFO]
[INFO] Built and pushed image as bolingcavalry/hellojib:0.0.1-SNAPSHOT
[INFO] Executing tasks:
[INFO] [==============================] 100.0% complete
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:47 min
[INFO] Finished at: 2019-06-30T22:16:19+08:00
[INFO] ------------------------------------------------------------------------
在hub.docker.com上已經(jīng)可以看到此鏡像了,如下圖(要登錄后再看自己的鏡像列表,如果沒有登錄是無法立即查到的):
在這里插入圖片描述
至此,Jib的實戰(zhàn)已經(jīng)完成,常用的操作相信您已經(jīng)熟悉了,希望本文能幫助您做出滿意的鏡像;
原文鏈接:https://blog.csdn.net/boling_cavalry/article/details/94355659