63

Google开源其Java容器化工具Jib,简化镜像构建全流程

 5 years ago
source link: http://www.10tiao.com/html/27/201807/2650493825/3.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
作者|Appu Goundan、Qingyang Chen 编辑|无明、张婵

容器的出现让 Java开发人员比以往任何时候都更接近“编写一次,到处运行”的工作流程,但要对 Java应用程序进行容器化并非易事:你必须编写 Dockerfile,以 root身份运行 Docker守护进程,等待构建完成,最后将镜像推送到远程注册中心。但并非所有的 Java开发人员都是容器专家,像以前那样只需要构建一个 JAR包的日子已经结束了吗?

为了应对这一挑战,谷歌开源了一个 Java容器化工具 Jib,有了这个工具,Java开发人员可以使用他们熟悉的 Java工具来构建容器。Jib是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写 Dockerfile或安装 Docker,而且可以直接集成到 Maven和 Gradle中——只需要将插件添加到构建中,就可以立即将 Java应用程序容器化。

Docker构建流程:

Jib构建流程:

Jib如何让开发变得更美好

Jib利用了 Docker镜像的分层机制,将其与构建系统集成,并通过以下方式优化 Java容器镜像的构建:

  1. 简单——Jib使用 Java开发,并作为 Maven或 Gradle的一部分运行。你不需要编写 Dockerfile或运行 Docker守护进程,甚至无需创建包含所有依赖的大 JAR包。因为 Jib与 Java构建过程紧密集成,所以它可以访问到打包应用程序所需的所有信息。在后续的容器构建期间,它将自动选择 Java构建过的任何变体。

  2. 快速——Jib利用镜像分层和注册表缓存来实现快速、增量的构建。它读取你的构建配置,将你的应用程序组织到不同的层(依赖项、资源、类)中,并只重新构建和推送发生变更的层。在项目进行快速迭代时,Jib只讲发生变更的层(而不是整个应用程序)推送到注册表来节省宝贵的构建时间。

  3. 可重现——Jib支持根据 Maven和 Gradle的构建元数据进行声明式的容器镜像构建,因此,只要输入保持不变,就可以通过配置重复创建相同的镜像。

如何使用 Jib来容器化你的应用程序

Jib可作为 Maven和 Gradle的插件使用,并且只需要做出最少的配置。只需将插件添加到构建定义中并配置目标镜像即可。如果要将镜像推送到私有注册中心,要为 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

在 Gradle 中使用 Jib:

plugins {  id 'com.google.cloud.tools.jib' version '0.9.0' } jib.to.image = 'gcr.io/my-project/image-built-with-jib' # Builds to a container image registry. $ gradle jib # Builds to a Docker daemon. $ gradle jibDockerBuild

Jib项目地址:github.com/GoogleContainerTools/jib



公众号内回复“1”带你进粉丝群

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK