Jib เป็นเครื่องมือช่วยสร้าง Docker และ OCI image
สำหรับระบบงานที่พัฒนาด้วย Java
โดยที่ไม่ต้องติดตั้งหรือมี Docker deamon 
รวมทั้งไม่ต้องเขียน Dockerfile อีกด้วย

โดยที่ Jib จะมี plugin มาให้ทั้ง Apache Maven และ Gradle เลย
หรือจะใช้งานผ่าน Jib-CLI ก็ได้

เป้าหมายของ Jib ประกอบไปด้วย

  • Fast คือทำงานได้อย่างรวดเร็ว จะทำการ build เฉพาะ Layer ที่เปลี่ยนแปลงเท่านั้น โดยจะแยก layer ต่าง ๆ ไว้ให้คือ  Dependency, Java class เป็นต้น ส่วน default base image จะใช้จาก Distroless/java
  • Reproducible ถ้าไม่มีการเปลี่ยนแปลงใด ๆ ก็จะไม่มีการ build อะไรให้ในขั้นตอนการสร้าง image
  • Deamonless ลด dependency ต่าง ๆ ของ CLI ลงไป ทำให้สามารถใช้งานผ่าน build tool เช่น Apache Maven และ Gradle ได้เลย ไม่ต้องมี Docker deamon อีกด้วย

แสดงขั้นตอนการทำงานของ Jib เมื่อเทียบกับ Docker workflow ปกติ

Docker workflow

Jib workflow

จะเห็นได้ว่า ช่วยให้เราพัฒนาและใช้งานได้ง่ายขึ้น
รวมทั้งง่ายต่อการ integrate ไปกับ pipeline ของ CI/CD อีกด้วย
แต่แนะนำว่า ควรเข้าใจการทำงานของทั้ง 2 workflow ก่อน

ตัวอย่างการใช้งาน Jib ร่วมกับ Spring Boot application

โดยที่สร้าง project ในรูปแบบ Gradle project
ให้เพิ่ม plugin ของ Jib เข้าไปในไฟล์ build.gradle ดังนี้

จากนั้นทำการ build Image และ push ไปยัง Image registry
ที่เราต้องการทั้ง public และ private ได้เลย

ยกตัวอย่างเช่นทำการ push Image ไปยัง Docker Hub

ต้องทำการ configuration username และ password ก่อน
หรือกำหนดผ่าน secret/credential tools (Docker credential helper) ต่าง ๆ ได้
เช่น

  • osxkeychain
  • secretservice
  • wincred
  • pass

ตัวอย่างการใช้ username/password ง่าย ๆ

จากนั้นใช้คำสั่ง run ดังนี้

หรือถ้าต้องการ build ไปยัง Docker deamon ก็ใช้คำสั่ง

เพียงเท่านี้ก็สามารถใช้งาน Jib แบบง่าย ๆ ได้แล้ว