Java 11 est annoncé comme la version la plus récente de LTS. Nous essayons donc de démarrer de nouveaux services basés sur cette version Java.
Cependant, l'image Docker de base pour Java 11 est beaucoup plus grande que l'équivalent pour Java 8:
openjdk:8-jre-alpine
: 84 Moopenjdk:11-jre-slim
: 283 Mo
(Je ne considère que l' OpenJDK officiel et les images les plus légères pour chaque version de Java.)
Des fouilles plus approfondies ont permis de découvrir les «choses» suivantes:
l'
openjdk:11-jre-slim
image utilise l'image de basedebian:sid-slim
. Cela amène 2 problèmes:c'est 60 Mo plus grand que
alpine:3.8
les versions de Debian
sid
sont instables
le
openjdk-11-jre-headless
package installé dans l'image est 3 fois plus volumineux queopenjdk8-jre
(à l'intérieur du conteneur Docker en cours d'exécution):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/
En allant plus loin, j'ai découvert la "racine" de cette lourdeur - c'est le
modules
fichier du JDK:# ls -lhG /usr/lib/jvm/java-11-openjdk-amd64/lib/modules 135M /usr/lib/jvm/java-11-openjdk-amd64/lib/modules
Alors, maintenant les questions qui se sont posées:
Pourquoi n'est-il
alpine
plus utilisé comme image de base pour les images minces Java 11?Pourquoi la version sid instable est-elle utilisée pour les images Java LTS?
Pourquoi le package slim / headless / JRE pour OpenJDK 11 est-il si volumineux par rapport au package OpenJDK 8 similaire?
- Quel est ce fichier de modules qui apporte 135 Mo dans OpenJDK 11?
UPD : comme solution à ces défis, on pourrait utiliser cette réponse: application Java 11 comme image docker