जावा 11 को सबसे हालिया एलटीएस संस्करण घोषित किया गया है। इसलिए, हम इस जावा संस्करण के आधार पर नई सेवाएँ शुरू करने का प्रयास कर रहे हैं।
हालाँकि, जावा 11 के लिए बेस डॉक की छवि जावा 8 के लिए समकक्ष से बहुत बड़ी है:
openjdk:8-jre-alpine
: 84 एमबीopenjdk:11-jre-slim
: 283 एमबी
(मैं केवल आधिकारिक OpenJDK और प्रत्येक जावा संस्करण के लिए सबसे हल्के चित्रों पर विचार कर रहा हूं ।)
गहरा खुदाई ने निम्नलिखित "चीजों" को उजागर किया:
openjdk:11-jre-slim
छवि आधार छवि का उपयोग करता हैdebian:sid-slim
। यह 2 मुद्दे लाता है:यह 60 एमबी से बड़ा है
alpine:3.8
डेबियन
sid
संस्करण अस्थिर कर रहे हैं
openjdk-11-jre-headless
पैकेज छवि में स्थापित है 3 गुना बड़ा की तुलना मेंopenjdk8-jre
(अंदर डोकर कंटेनर चल):openjdk:8-jre-alpine
:/ # du -hs /usr/lib/jvm/java-1.8-openjdk/jre/lib/ 57.5M /usr/lib/jvm/java-1.8-openjdk/jre/lib/
openjdk:11-jre-slim
:# du -sh /usr/lib/jvm/java-11-openjdk-amd64/lib/ 179M /usr/lib/jvm/java-11-openjdk-amd64/lib/
गहराई में जाने पर मुझे इस भारीपन की "जड़" का पता चला - यह
modules
JDK की फाइल है:# ls -lhG /usr/lib/jvm/java-11-openjdk-amd64/lib/modules 135M /usr/lib/jvm/java-11-openjdk-amd64/lib/modules
तो, अब जो प्रश्न आए:
alpine
जावा 11 स्लिम इमेज के लिए बेस इमेज के रूप में किसी और का उपयोग क्यों नहीं किया जाता है?एलटीएस जावा छवियों के लिए अस्थिर किनारे संस्करण का उपयोग क्यों किया जाता है?
OpenJDK 11 के लिए स्लिम / हेडलेस / JRE पैकेज समान OpenJDK 8 पैकेज की तुलना में इतना बड़ा क्यों है?
- यह मॉड्यूल फ़ाइल क्या है जो OpenJDK 11 में 135 एमबी लाता है?
UPD : इन चुनौतियों के समाधान के रूप में, कोई भी इस उत्तर का उपयोग कर सकता है: Java 11 अनुप्रयोग docker इमेज के रूप में