jib 使用教程

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容