Jib构建你的第一个java镜像

jib Official:GoogleContainerTools/jib

本文示例完整demo github地址 https://github.com/moxingwang/jib

想要了解并且使用jib,首先你得知道或者使用过docker,在这个基础上才能够明白jib是干什么得,解决了什么问题。

首先我们先看一个例子,如何将一个spring-boot项目简单容器化,如果你从未操作过,可以动手自己实现,或者仔细阅读这篇文章第一个 spring Boot 应用通过Docker 来实现构建、运行、发布。你可能发现如果需要把一个java项目容器化这是一个麻烦和相对复杂的过程,首先你需要编写dockerfile,然后在build dockefile,如过需要push到registries,还需要经过push操作。虽然build和push还是非常简单得。但是写一个dockerfile真的比较麻烦,学习成本也高,看看官网Dockerfile reference就不想学了。那么有没有简单得办法呢,记住几个简单得命令就可以运行了,如同‘mvn spring-boot:run’这么简单得命令,这个时候jib出场了,他就是来完成这个伟大得使命。

如果你还没明白jib是用来做什么事情得,推荐你阅读谷歌开源Java镜像构建工具Jib的前半部分,或者阅读jib Official:GoogleContainerTools/jib

接下来主要介绍具体如何使用(maven的方式)。

将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

可能你刚刚运行玩这一步就出现错误,提示Unauthorized,不用担心,这个命令需要把构建出来的image commit并且push到你远程的registry(我这里是registry.hub.docker.com),你可以按照【常见错误1】的方法解决问题。

如果你的网速慢一点可能会在最后步骤‘Finalizing...‘,不过没有关系,稍微多等一会就ok,直到‘BUILD SUCCESS‘出现。最终一个完整的java project被实例化成镜像并且push到了registry里。接下来你可以测试刚刚完成push的镜像。

打开https://hub.docker.com/,你会发现你的image已经构建成功。

  • docker使用镜像

    docker run -it --rm -p8080:8080 registry.hub.docker.com/moxingwang/jibtest

一个spring-boot的image这样就被启动成功了。本文示例demo中集成了swagger-iu, 项目启动成功后我们可以通过http://localhost:8080/sw/swagger-ui.html访问,可以成功在浏览器打开swagger。

把镜像直接构建到本地docker中

使用这种构建方式,首先你要确保本已经安装docker并且环境变量都配置正确,因为这种方式jib依赖docker 命令执行,你还需要保证已经启动服务(在terminal中执行 docker --version 能够正确返回)。

mvn compile jib:dockerBuild

接下来直接操作,首先查看本地已有images

docker iamges

执行mvn compile jib:dockerBuild

可以看到本地image已经build成功。可以直接启动使用

docker run -it --rm -p8080:8080 moxingwang/jibtest

启动成功后同样可以直接访问http://localhost:8080/sw/swagger-ui.htmlswagger页面。

常见错误

常见错误1 Failed to execute goal com.google.cloud.tools:jib-maven-plugin:0.9.6:build (default-cli) on project jib: Build image failed, perhaps you should set a credential helper name with the configuration ‘<from><credHelper>‘ or set credentials for ‘registry.hub.docker.com‘ in your Maven settings: Unauthorized for registry.hub.docker.com/moxingwang/jibtest: 401 Unauthorized

当你从私有的registries pull或者push的时候需要认证机制。阅读官方说明按照步骤操作即可。Authentication Methods
如果帮你本机已经按照docker,那么操作更简单,可以通过docker命令直接登陆registries,然后继续其他jib的操作。

  • registry.hub.docker.com

    docker login --username=你的hub.docker的用户名 registry.hub.docker.com
  • registry.hub.docker.com
    docker login --username=阿里云docker用户名 registry.cn-hangzhou.aliyuncs.com

推荐阅读

原文地址:http://blog.51cto.com/13828850/2146314

时间: 2024-10-12 17:21:52

Jib构建你的第一个java镜像的相关文章

Jib构建镜像的问题分析(Could not find or load main class ${start-class})

问题简述 通过Jib插件将SpringBoot工程制作成Docker镜像成功,但是运行镜像的时候报错(Could not find or load main class ${start-class}),今天来一起分析这个问题,希望能帮读者跳过小坑. 关于Jib插件 在Maven工程中可以使用Jib插件将当前Java工程构建成Docker镜像,详情请参考: <Docker与Jib(maven插件版)实战>; <Jib使用小结(Maven插件版)>; 环境信息 操作系统:macOS M

构建一个Java语言的unikernel,(基于OSv的 unikernel)

pre.ctl { font-family: "Liberation Mono", monospace } p { margin-bottom: 0.25cm; line-height: 120% } code.ctl { font-family: "Liberation Mono", monospace } a:link { } 构建一个Java语言的unikernel,(OSv unikernel) 1.跟着官方教程步骤,与之前构建的rumprun uniker

webmagic的设计机制及原理-如何开发一个Java爬虫 转

此文章是webmagic 0.1.0版的设计手册,后续版本的入门及用户手册请看这里:https://github.com/code4craft/webmagic/blob/master/user-manual.md 之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方面倒是有一些心得,希望对读者有帮助. webmagic的目标 一般来说,一个爬虫包括

如何交互式地创建一个Docker镜像

今天我们来学习如何使用一个docker镜像交互式地创建一个Docker镜像.当我们从镜像中启动一个Docker进程,Docker就会获取该镜像及其父镜像,并重复这个过程,直到到达基础镜像.然后联合文件系统(UFS)会在其顶层添加一个读写层.读写层被称之为容器,它包含了一些关于父镜像信息及一些其他的信息,如唯一ID,网络配置和资源限制等.容器是有状态的,其状态可以从 运行态 切换到 退出态.一个处于 运行态的容器包含了在CPU上面运行的进程树,于其它在该主机上运行的进程相隔离,而退出态是指文件系统

Spring Boot . 2 -- 用Spring Boot 创建一个Java Web 应用

通过 start.spring.io 创建工程 通过 IDEA 创建工程 ??<Spring Boot In Action> 中的例子 建立一个展示阅读列表的应用.不同的用户将读过的书的数据登记进来,每次进到页面都能看到相应的读书记录. 1. 首先登录页面 start.spring.io. 页面大概长这个样子: 点击空框内的链接,会展示更全面的参数选择.[参数填好后],选择 "Generate Project" 就可以将一个完整的Spring Boot 工程下载下来了. 工

docker 实战---安装一个基础镜像 (一)

泡了几天官网,对docker有了一点了解.准备着手搭建一个公司的开发测试环境,包括java.python. 环境介绍 首先说明一下我的环境 2台物理服务器(后面简称主机) 主机A的配置如下: [[email protected] ~]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:p

【菜鸟入门】安装配置eclipse 并编写运行第一个Java程序

不得不吐槽一下,安装配置这eclipse真是太费劲了...下面总结一下,以便下次再安装 本人 win10系统,64位机 一.在官网下载eclipse安装包 文件名:eclipse-inst-win64.exe 网址:https://www.eclipse.org/downloads/download.php?file=/oomph/epp/oxygen/R/eclipse-inst-win64.exe //建议下载前点击"Select Another Mirror",选择一个国内镜像,

我的第一个java定时器

在开发中,我们经常需要一些周期性的操作,例如每隔几分钟就进行某一项操作.这时候我们就要去设置个定时, 接下来就去开发我的第一个java定时器吧,Java计时器实用程序允许您执行线程或任务在一个预先确定的将来的时间,并根据一组这些任务可以重复频率. 设计和实现一个计时器,会用到model-control-view(MVC)设计模式. 开始: 首先来构w建一个最简单的java web 项目吧.这里我用的是最myeclipse,好处自然不必多说,谁用谁知道,当然如果 你要用其他IDE也可以. 在mye

Docker 第一个HelloWorld镜像

Docker 创建第一个HelloWorld镜像: 创建Dockerfile FROM alpine CMD "echo" "Hello World!" 通过Dockerfile构建image,  docker build -t hellosky:1 . 查看是否构建成功: 通过镜像启动容器:docker run --rm hellosky:1 搞定! 原文地址:https://www.cnblogs.com/AK47Sonic/p/8733244.html