Warum ist die Java-11 base-Andockfenster Bild so groß? (openjdk:11-jre-slim)
Java 11 angekündigt ist die jüngste LTS-version. Wir versuchen also, um neue Dienstleistungen auf Grundlage dieser Java-version.
Jedoch die Basis Docker-image für Java-11 ist viel größer als das äquivalent für Java 8:
-
openjdk:8-jre-alpine
: 84 MB -
openjdk:11-jre-slim
: 283 MB
(Ich überlege mir nur die
Tiefer Graben aufgedeckt, der folgende "Dinge":
-
den
openjdk:11-jre-slim
Bild verwendet das Basis-imagedebian:sid-slim
. Das bringt 2 Probleme:-
dies ist 60 MB größer als
alpine:3.8
-
den Debian
sid
Versionen sind instabil
-
-
den
openjdk-11-jre-headless
- Paket installiert in der Bild ist 3 mal größer alsopenjdk8-jre
(innen laufende Docker-container):-
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/
Gehen tiefer entdeckte ich die "Wurzel" dieser schwere - es ist die
modules
- Datei der JDK:# ls -lhG /usr/lib/jvm/java-11-openjdk-amd64/lib/modules 135M /usr/lib/jvm/java-11-openjdk-amd64/lib/modules
-
So, nun zu den Fragen, die kam:
-
Warum ist
alpine
nicht mehr genutzt wird, als Basis-image für Java-11-slim-Bilder? -
Warum ist instabil sid version für die LTS Java Bilder?
-
Warum ist die slim/headless/JRE-Paket für OpenJDK 11 so groß im Vergleich zu den ähnlichen OpenJDK-8-Paket?
- Was ist das Module - Datei, die bringt 135 MB in OpenJDK 11?
UPD: als Lösungen für diese Herausforderungen könnte man diese Antwort: Java-11-Applikation als docker-image
- Auch für eine neue Versionen (JDK 9+) von Java sind modular, was erklärt, warum gibt es Module in 11 vs 8.
- Im Zusammenhang Lesen, vielleicht - Benchmarking Debian vs Alpine als Basis Docker-Image
- Es ist keine JRE-11, also das, was Sie haben, ist eine komplette JDK. Können Sie erstellen, die kompakte Umgebungen, sogar schlanker als JRE 8, aber es erfordert eine tatsächliche modulare Anwendung, so dass die Abhängigkeiten bekannt sind.
- Zusätzlich zu den oben genannten, nicht all jene Module, die Sie finden, wie der Grund der Zunahme der Größe der tatsächlich benötigten für Ihre Anwendungen. Aber um herauszufinden, welche diejenigen, die Sie sind gehen Sie zum erstellen einer modularen Anwendung. Sie können herausfinden, mehr über jlink (eingeführt in Java9) für diesen Zweck.
- Was könnte eine bessere Zeit, um zu Lesen, diese online - twitter.com/LogicTheoryIO/status/1064503559071371265
- Es ist keine JRE-11, also das, was Sie haben, ist eine komplette JDK. Hm. Das macht noch mehr verwirrend, denn es gibt sowohl
11-jre-slim
und11-jdk-slim
, aber was ist noch mehr zu verwirren: "src.zip" in das jdk-image ist eine defekte weiche-Verknüpfung (also "src.zip" ist es nicht!)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist, weil, leider, es gibt keine offiziellen stabilen OpenJDK 11 bauen für Alpin-aktuell.
Alpine nutzt musl libc, im Gegensatz zu den standard-glibc verwendet, die von den meisten Linux-Versionen gibt, was bedeutet, dass eine JVM muss kompatibel sein mit musl-libc für die Unterstützung Vanille-Alpine. Der musl OpenJDK-port wird entwickelt unter OpenJDK ist Portola Projekt.
Den aktuellen Stand zusammengefasst ist auf der OpenJDK-Seite 11:
Die einzigen stabilen OpenJDK-Versionen für Alpine derzeit sind 7 und 8, zur Verfügung gestellt von der IcedTea Projekt.
Jedoch - wenn Sie bereit sind, betrachten Sie andere als die offiziellen OpenJDK, Azul Zulu OpenJDK bietet eine überzeugende alternative:
Zur Unterstützung der Verfügbarkeit und Fahrplan finden Sie unter Azul-support-roadmap.
Update, 3/6/19: Als gestern
openjdk11
ist verfügbar in Alpine repositories! Es könnte sein, packte auf Alpine mit:Das Paket basiert auf der
jdk11u
OpenJDK Niederlassung plus portiert fixes von Projekt Portola, eingeführt mit den folgenden PR. Ein dickes Lob und Riesen Dank an das Alpine-team.Das ist eine faire Frage /Anfrage. Es ist eigentlich ein offenes ticket für die Bereitstellung von Java-11 auf eine stabile Debian-release:
https://github.com/docker-library/openjdk/issues/237
Update, 26/12/18: Das Problem behoben wurde,, und jetzt die OpenJDK-11-slim-Bild basiert auf
stretch-backports
OpenJDK-11 wurde vor kurzem zur Verfügung gestellt (PR-link).Java 9 vorgestellt das Modul-system, das ein neues und verbessertes Konzept für die Gruppierung der Pakete und Ressourcen, im Vergleich zu jar-Dateien. Dieser Artikel von Oracle gibt eine sehr ausführliche Einführung zu diesem feature:
https://www.oracle.com/corporate/features/understanding-java-9-modules.html
Den
modules
Datei-bundles alle Module im Lieferumfang der JRE. Die komplette Liste der Module gedruckt werden konnten-mitjava --list-modules
.modules
ist in der Tat eine sehr große Datei, und so kommentiert, es enthält alle standard-Module, und es ist daher ziemlich aufgebläht.Eine Sache zu beachten ist jedoch, dass es ersetzt
rt.jar
undtools.jar
wurde veraltet, unter anderem, damit, wenn die Buchhaltung für die Größe dermodules
im Vergleich zu pre-9 OpenJDK aufbaut, die Größen derrt.jar
undtools.jar
subtrahiert werden sollen (Sie sollten sich einige 80MB kombiniert).