zoukankan      html  css  js  c++  java
  • google jib容器打包工具

    简介

    Jib 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供。

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

    Docker 构建流程:

    Jib 构建流程:


    配置

    maven

    编辑pom.xml文件,添加以下内容:

        <build><plugins>
          ...
          <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>jib-maven-plugin</artifactId>
            <version>0.9.4</version>
            <configuration>
              <to>
                <image>myimage</image><credHelper>osxkeychain</credHelper>
              </to>
            </configuration>
          </plugin>
          ...
        </plugins>
      </build>

    配置说明:

    • from:打包docker的基础镜像,默认镜像是:gcr.io/distroless/java ,需要翻墙
    • to:默认push到dockerhub指定仓库
    • credHelper:docker认证,这个就有点复杂了,下面再详细说明

    credHelper

    这个是使用了第三方的一个docker认证工具,源码仓库:https://github.com/docker/docker-credential-helpers

    这里我提供一个linux的二进制压缩包: https://download.csdn.net/download/lusyoe/10534491

    下面是配置操作步骤:

    1. 解压

    下载好后,将其复制到/usr/bin路径下,然后通过以下命令进行解压: tar -xf docker-credential-pass-v0.6.0-amd64.tar.gz

    验证是否可用: docker-credential-pass version 如果打印出0.6.0就表示正常

    2. 安装gpg、pass

    执行以下命令: CentOS: sudo yum install gpg pass -y Ubuntu: sudo apt-get install gpg pass -y

    3. 创建签名

    通过gpg2命令生成签名: gpg2 --gen-key 根据提示,一路确认下来就可以了。中间会提示输入密码,这个要记住了,后面会用到。

    最后生成随机数的时候可能会慢一点,随便在键盘上敲点字符就可以了。 最终生成的内容如下:

    1. gpg: /root/.gnupg/trustdb.gpg: trustdb created
    2. gpg: key xxxxx marked as ultimately trusted
    3. public and secret key created and signed.
    4. gpg: checking the trustdb
    5. gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
    6. gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
    7. pub 2048R/6CC91C4E 2018-07-11
    8. Key fingerprint = 8E3C 1083 6041 33A8 99CA DC55 1E68 4783 6CC9 1C4E
    9. uid lusyoe <xxxxx@xxx.com>
    10. sub 2048R/595B7456 2018-07-11

    4. 配置pass

    • 初始化 
      生成完签名后,通过pass工具进行初始化一下,执行以下命令: 
      pass init <gpg-key> 
      gpg-key就是上一步生成内容的第二行key后面的xxxxx内容。

    • 插入密钥检查 
      pass insert docker-credential-helpers/docker-pass-initialized-check 
      这里会提示输入密码,最好保持跟之前的gpg一致即可,后面还会提示输入gpg的密码

    • 验证pass是否已初始化 
      pass show docker-credential-helpers/docker-pass-initialized-check

    5. 配置docker

    编辑~/.docker/config.json文件,添加以下内容:

    1. {
    2. "credsStore": "osxkeychain"
    3. }

    配置完后,就可以使用:docker login开始登陆了。

    构建

    先编译,然后再打包镜像,当然也可以绑定maven构建周期,自动打包镜像。 
    mvn compile 
    mvn jib:build

    githhub:https://github.com/GoogleContainerTools/jib

    优点

    • 无需编写Dockerfile,甚至无需安装docker
    • 无需再执行docker build、push命令了
    • 增量构建镜像,无需每次编译项目先打包jar

    缺点

    • 默认拉取的基础镜像是gcr仓库的,需要翻墙,并且jdk默认是openjdk
    • 在拉取自定义的基础镜像和push构建的镜像这块,设计的不够友好,依赖需要第三方的加密组件(折腾了好一会);
    • 侵入性太强,需要每个项目都添加上maven插件。如果是现有方案,只需要添加一个Dockerfile就可以了,而且定制化高
    • 只支持java平台
    原文地址:https://blog.csdn.net/u010978040/article/details/81011855
  • 相关阅读:
    spring框架学习笔记(七)
    spring框架学习笔记(六)
    spring框架学习笔记(五)
    spring框架学习笔记(四)
    spring框架学习笔记(三)
    leetcode 147. Insertion Sort List ----- java
    leetcode 146. LRU Cache ----- java
    leetcode 145. Binary Tree Postorder Traversal ----- java
    leetcode 144. Binary Tree Preorder Traversal ----- java
    leetcode 143. Reorder List ----- java
  • 原文地址:https://www.cnblogs.com/jpfss/p/10930961.html
Copyright © 2011-2022 走看看