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平台


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM