转载:https://blog.csdn.net/u012562943/article/details/80995373

一、前言

容器的出现让Java开发人员比以往任何时候都更接近“编写一次,到处运行”的工作流程,但要对Java应用程序进行容器化并非易事:你必须编写Dockerfile,以root身份运行Docker守护进程,等待构建完成,最后将镜像推送到远程注册中心。但并非所有的Java开发人员都是容器专家,像以前那样只需要构建一个JAR包的日子已经结束了吗?为了应对这一挑战,谷歌开源了一个Java容器化工具Jib,有了这个工具,Java开发人员可以使用他们熟悉的Java工具来构建容器。Jib是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写Dockerfile或安装Docker,而且可以直接集成到Maven中,只需要将插件添加到构建中,就可以立即将 Java应用程序容器化。

二、Docker构建流程:

三、Jib构建流程:

四、Jib如何让开发变得更美好
Jib利用了Docker镜像的分层机制,将其与构建系统集成,并通过以下方式优化 Java容器镜像的构建
简单——Jib使用Java开发,并作为Maven的一部分运行。你不需要编写Dockerfile或运行Docker守护进程,甚至无需创建包含所有依赖的大JAR包。因为Jib与Java构建过程紧密集成,所以它可以访问到打包应用程序所需的所有信息。在后续的容器构建期间,它将自动选择Java构建过的任何变体。
快速——Jib利用镜像分层和注册表缓存来实现快速、增量的构建。它读取你的构建配置,将你的应用程序组织到不同的层(依赖项、资源、类)中,并只重新构建和推送发生变更的层。在项目进行快速迭代时,Jib只讲发生变更的层(而不是整个应用程序)推送到注册表来节省宝贵的构建时间。
可重现——Jib支持根据Maven的构建元数据进行声明式的容器镜像构建,因此,只要输入保持不变,就可以通过配置重复创建相同的镜像。
五、如何使用Jib来容器化你的应用程序
Jib可作为Maven的插件使用,并且只需要做出最少的配置。只需将插件添加到构建定义中并配置目标镜像即可。如果要将镜像推送到私有注册中心,要为Jib配置所需的秘钥。最简单的方法是使用docker-credential-gcr之类的凭证助手。Jib还提供了其他的一些规则,用于将镜像构建到 Docker守护进程。
在Maven中使用Jib:
<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>jib-maven-plugin</artifactId>
  <version>0.9.0</version>
  <configuration>
    <to>
      <image>gcr.io/my-project/image-built-with-jib</image>
    </to>
  </configuration>
</plugin>
# Builds to a container image registry.
$ mvn compile jib:build
# Builds to a Docker daemon.
$ mvn compile jib:dockerBuild
Jib项目地址:github.com/GoogleContainerTools/jib

利用Google开源Java容器化工具Jib构建镜像的更多相关文章

  1. WEKA,一个开源java的数据挖掘工具

    开始研究WEKA,一个开源java的数据挖掘工具. HS沉寂这么多天,谁知道偏偏在我申请离职的时候给我安排了个任务,哎,无语. 于是,今天看了一天的Weka. 主要是看了HS提供的三个文章(E文,在g ...

  2. [转] Google 开源 iOS 应用测试工具:EarlGrey

    Google 开源 iOS 应用测试工具:EarlGrey oschina 发布于: 2016年02月18日 (3评) 分享到:    收藏 +53 3月19日,深圳源创会火热报名中,go>&g ...

  3. 开源Android容器化框架Atlas开发者指南

    Atlas是古希腊神话中的天神,是波士顿动力公司的机器人,借助搜索引擎,得以发现这个名词背后许许多多的含义.在手机淘宝,Atlas是一个扎根于Android客户端的一个组件化容器框架,相比神话中用手和 ...

  4. 利用 ELK 搭建 Docker 容器化应用日志中心

    利用 ELK 搭建 Docker 容器化应用日志中心 概述 应用一旦容器化以后,需要考虑的就是如何采集位于 Docker 容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志 ...

  5. Facets:一款Google开源机器学习数据集可视化工具

    Homepage/演示网站:https://pair-code.github.io/facets/ Pypi:https://pypi.org/project/facets-overview/ Git ...

  6. .NETCore 实现容器化Docker与私有镜像仓库管理

    原文:.NETCore 实现容器化Docker与私有镜像仓库管理 一.Docker介绍 Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技 ...

  7. 7 款开源 Java 反编译工具

    今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其是像.NET.Java这样的运行在 ...

  8. 7款开源Java反编译工具

    今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其是像.NET.Java这样的运行在 ...

  9. 详解利用ELK搭建Docker容器化应用日志中心

    概述 应用一旦容器化以后,需要考虑的就是如何采集位于Docker容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志 收集.本文即将阐述如何利用ELK日志中心来收集容器化应用 ...

随机推荐

  1. Django关于设置自定义404和安装debug-toolbar的笔记

    Django关于设置自定义404和安装debug-toolbar的笔记 关于设置404 先做好404页面,然后在views.py文件中做好映射,最后是在urls.py做好路由,而这个urls.py必须 ...

  2. apache 中 RewriteCond 介绍

    一.Yii2 URL美化 修改Apache配置文件之前,需要先在 httpd.conf中搜索一下 rewrite ,查看一下 LoadModule rewrite_module modules/mod ...

  3. EasyUI学习总结(二)——easyloader分析与使用(转载)

    本文转载自:http://www.cnblogs.com/haogj/archive/2013/04/22/3036685.html 使用脚本库总要加载一大堆的样式表和脚本文件,在easyui 中,除 ...

  4. Javascript:自己写模板引擎

    背景 因为JS没有提供“字符串插入”和“多行字符串”特性,传统的拼凑字符串容易出错.性能不高和不容易理解代码,为了应对这些问题,很多个人和团队开发了模板引擎,现在主流的JS框架几乎都提供此类功能了. ...

  5. Java Comparator字符排序(数字、字母、中文混合排序)

    Java.lang.Character类 复习一下 这是修正前的排序效果: 这是修正后的排序效果: 完整示例: 以下是排序的部份代码(非全部代码:拼音首字母算法不在其中) import java.ut ...

  6. [Python] 文件扫描

    文件扫描 下载 https://github.com/YouXianMing/FileManager 细节 1. 基于Python 3.60,其他版本未测试 2. 支持扫描深度,不设置则扫描全部,设置 ...

  7. 递归与迭代的联系以及优缺点(以c++为例)

    1.递归的定义: 程序直接或间接的调用自身的方法. 递归算法的特点:(1) 递归就是在过程或函数里调用自身.(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口.(3) 递归算法解题通 ...

  8. js,html-点击直接跳转到页面底/顶部

    案例一:js控制,无滑动效果 <html> <body> <a href="javascript:void(0);" onclick="ja ...

  9. Spark机器学习(4):朴素贝叶斯算法

    1. 贝叶斯定理 条件概率公式: 这个公式非常简单,就是计算在B发生的情况下,A发生的概率.但是很多时候,我们很容易知道P(A|B),需要计算的是P(B|A),这时就要用到贝叶斯定理: 2. 朴素贝叶 ...

  10. 结巴分词和自然语言处理HanLP处理手记

    手记实用系列文章: 1 结巴分词和自然语言处理HanLP处理手记 2 Python中文语料批量预处理手记 3 自然语言处理手记 4 Python中调用自然语言处理工具HanLP手记 5 Python中 ...