Java 11 wird als neueste LTS-Version angekündigt. Wir versuchen also, neue Dienste basierend auf dieser Java-Version zu starten.
Das Basis-Docker-Image für Java 11 ist jedoch viel größer als das Äquivalent für Java 8:
openjdk:8-jre-alpine: 84 MBopenjdk:11-jre-slim: 283 MB
(Ich betrachte nur das offizielle OpenJDK und die leichtesten Images für jede Java-Version.)
Beim tieferen Graben wurden die folgenden "Dinge" entdeckt:
Das
openjdk:11-jre-slimBild verwendet das Basisbilddebian:sid-slim. Dies bringt 2 Probleme mit sich:das ist 60 MB größer als
alpine:3.8Die Debian-
sidVersionen sind instabil
Das
openjdk-11-jre-headlessim Image installierte Paket ist dreimal größer alsopenjdk8-jre(innerhalb des laufenden Docker-Containers):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/Als ich tiefer ging, entdeckte ich die "Wurzel" dieser Schwere - es ist die
modulesDatei des JDK:# ls -lhG /usr/lib/jvm/java-11-openjdk-amd64/lib/modules 135M /usr/lib/jvm/java-11-openjdk-amd64/lib/modules
Nun also die Fragen, die kamen:
Warum wird es
alpinenicht mehr als Basis-Image für schlanke Java 11-Images verwendet?Warum wird die instabile Sid- Version für LTS-Java-Images verwendet?
Warum ist das schlanke / kopflose / JRE-Paket für OpenJDK 11 im Vergleich zum ähnlichen OpenJDK 8-Paket so groß?
- Was ist diese Moduldatei , die 135 MB in OpenJDK 11 bringt?
UPD : Als Lösung für diese Herausforderungen könnte man diese Antwort verwenden: Java 11-Anwendung als Docker-Image