REPOSITORY TAG IMAGE ID CREATED SIZE
an-image 1 X 26 seconds ago 279 MB
Wenn das Docker-Image ausgeführt wird, wird die folgende Meldung angezeigt:
No java installations was detected.
Please go to http://www.java.com/getjava/ and download
Bei der Bereitstellung von Oracle JDK wird die Docker-Image-Größe mehr als verdoppelt!
REPOSITORY TAG IMAGE ID CREATED SIZE
an-image 2 X 26 seconds ago 666 MB
Diskussion
Wenn "Gibt es kein Oracle JDK für Docker" gegoogelt wird, werden nur einige Links zum Docker-Image zurückgegeben, die Docker enthalten. Wenn Oracle JDK im Docker-Image bereitgestellt wird, wird die Größe mehr als verdoppelt. Ich möchte die Docker-Images so klein wie möglich halten, aber das Oracle JDK scheint größer zu sein als das Image selbst!
Frage
Gibt es kein Oracle JDK für Docker?
docker
oracle-jdk
030
quelle
quelle
Antworten:
Nein. Da Sie Oracle JDK oder JRE nicht vertreiben können, lässt die Lizenz die Verteilung nicht zu . Bei der Verteilung durch Dritte (in Ihre App eingebettet) liegt die Haftung dafür, dass sie nicht funktioniert, bei dieser Partei. Aus diesem Grund finden Sie Oracle JDK / JRE in keiner der öffentlichen Docker-Registrierungen oder in einem Linux-Paket-Repository.
Sie können Ihr eigenes Image erstellen und Oracle JDK oder JRE mithilfe des webupd8team / java- Pakets für Ubuntu / Debian installieren .
Wenn Sie Alpine Linux verwenden, werden in diesem Blogbeitrag die erforderlichen Abhängigkeiten erläutert und Installationsanweisungen zu StackOverflow bereitgestellt .
Update : Oracle hat jetzt ein offizielles Docker-Image im Docker Store . https://blogs.oracle.com/developers/official-docker-image-for-oracle-java-and-the-openjdk-roadmap-for-containers
Link zum Docker Store Oracle Java Image - https://store.docker.com/images/oracle-serverjre-8
quelle
Dockerfile
s auf GitHub verwenden, um ein eigenes Docker-Image mit Java zu erstellen. Zum Beispiel github.com/anapsix/docker-alpine-java/blob/master/8/121b13/jdk/…Da docker kein Betriebssystem ist, gibt es kein JDK für docker.
Soweit ich Ihre Frage verstehe, ist ein vollständiges JDK zu groß für Ihre Wünsche. In diesem Fall können Sie versuchen, nur auf das JRE zu wechseln und nur die erforderlichen Bibliotheken einzuschließen.
JDK ist die Abkürzung für Java Development Kit, JRE ist die Abkürzung für Java Runtime Engine. Durch "Faulheit" aufgrund der Komplexität, jede benötigte Abhängigkeit aufzulisten, streift sich niemand nur zu den benötigten Bibliotheken, aber das ist der richtige Weg, wenn Sie die installierte Größe auf ein striktes Minimum reduzieren möchten.
Ein besserer Weg könnte darin bestehen, einige der installierten Dinge zu entfernen, die viel Platz beanspruchen:
Es gibt zwei * src.zip, die entfernt werden können, aber nicht von Nutzen sind. Wie Sie sehen, ist das lib-Verzeichnis halb so groß und enthält eine Reihe von Dingen, die Sie nicht wirklich benötigen:
Sie können missoncontrol problemlos auf einem Server entfernen. Ich gehe davon aus, dass Sie visualvm auch entfernen können. Sie müssen prüfen, ob Sie etwas in diesem lib-Verzeichnis benötigen, aber ich kann es nicht sagen, ohne Ihre App zu kennen.
Eine Sache, die Sie während der Installation von Oracle JDK in Ihrer Docker-
.tar.gz
Datei tun sollten, ist, die heruntergeladene Datei zu entfernen, die ungefähr dieselbe Größe wie das resultierende Verzeichnis hat, da die.jar
Dateien bereits komprimiert sind.Sie müssen all dies im selben
RUN
Befehl ausführen und mit verketten&&
, um zu vermeiden, dass Ebenen hinzugefügt werden, bei denen Sie die Größe nicht entfernen, indem Sie Dateien von der vorherigen Ebene entfernen.quelle
Es gibt keine offizielle Oracle JDK-Implementierung, die von Docker bereitgestellt wird. Docker unterstützte früher ihre eigene Java-Bibliothek auf hub.docker.com, sie verwarf sie jedoch zugunsten der tatsächlichen OpenJDK-Implementierung, da sie seit ihrer Einführung "OpenJDK-spezifisch" war. Ihre Argumentation:
Wenn Sie also Ihr Docker-Image so klein wie möglich halten möchten, sollten Sie stattdessen OpenJDK verwenden. Es gibt ein offizielles OpenJDK Dockerfile-Repository, oder Sie können es einfach verwenden
docker pull openjdk
. Das grundlegende Dockerfile "easy to run" für OpenJDK 7 sieht wie folgt aus (entnommen aus der im vorherigen Satz aufgelisteten Website):quelle