OpenJDK Java 17 Docker-Image

Lesezeit: 4 Minuten

Wir aktualisieren unsere Microservices in Docker auf die Verwendung von Java 17 und haben zuvor das Basis-Image openjdk:11-jre-slim verwendet. Was ist das entsprechende Image für Java 17?

Es scheint kein openjdk:17-jre-slim zu geben? Tatsächlich scheint es keine aktuellen JRE-Bilder zu geben – nur JDKS. Das 11-jre-slim-Image scheint etwa 75 MB groß zu sein – gibt es ein geeignetes Java 17-Image ähnlicher Größe?

Wir haben in der Vergangenheit auch Alpenbilder verwendet.

  • Sehen Sie sich dieses Github-Problem an: github.com/docker-library/openjdk/issues/468 Upstream stellt kein JRE mehr bereit, daher werden keine offiziellen JRE-Images erstellt. Es gibt eine ähnliche Diskussion darüber Adoptium (ehemals AdoptOpenJDK) veröffentlicht keine JREs mehr. Im Guten wie im Schlechten gehen die offiziellen JREs den Weg des Dodo.

    – Joachim Sauer

    11. Okt. 2021 um 11:10 Uhr


  • Abgesehen davon scheint das JDK jetzt über Tools zum Erstellen benutzerdefinierter JREs zu verfügen, sodass es möglich sein sollte, selbst eines zu erstellen: baeldung.com/jlink und hier ein Beispiel von Eclipse Tamurin für eine openjdk 11 JRE: hub.docker.com/_/eclipse-temurin blog.adoptium.net/2021/08/using-jlink-in-dockerfiles

    – kutschkem

    11. Okt. 2021 um 11:21 Uhr


  • @kutschkem: Ja, benutzerdefinierte, von jlink erstellte Basis-Images sind die Alternative, aber ich würde diese nicht „JREs“ nennen, da sie nicht genau das sind, was sie sind, und die Bezeichnung kann zu Annahmen führen, die nicht richtig sind, und zu Verwirrung.

    – Joachim Sauer

    11. Okt. 2021 um 11:23

  • Sie können verwenden Alpine JDK 17 FROM openjdk:17-alpine

    – CᴴᴀZ

    18. August 2022 um 7:41 Uhr

Santanus Benutzeravatar
Santanu

Das Oracle-Image ist ab Java-17 frei verfügbar openjdk:17-oracle

Docker-Datei:

FROM openjdk:17-oracle

openjdk:17-jdk-slim Erzeugt auch ein leichtes Bild

Docker-Datei:

FROM openjdk:17-jdk-slim

  • 17-oracle ist das gleiche Tag für 17.0.1-jdk-oraclelinux8, jdk-oraclelinux8, 17.0.1-jdk-oracle, 17-jdk-oracle, 17-oracle, jdk-oracle usw. Im Grunde ist es das gleiche JDK Bild, nicht JRE. github.com/docker-library/docs/blob/master/openjdk/…

    – Igor

    14. Januar 2022 um 8:49

  • Gibt es hier keine lizenzrechtlichen Bedenken? Ich denke, die meisten Leute wollen Oracle heutzutage meiden

    – Novaterata

    18. April 2022 um 16:38 Uhr

  • @Novaterata ab Java 17 können Sie es auch für kommerzielle Zwecke frei nutzen

    – Deekshith Anand

    16. Mai 2022 um 9:13 Uhr

  • @DeekshithAnand 🤯

    – Novaterata

    16. Mai 2022 um 16:02 Uhr

  • Wie @DeekshithAnand perfekt erwähnt hat, kann das Oracle-Image ab Java 17 frei verwendet werden. Wenn Sie nach einem anderen Bild suchen, funktioniert „openjdk:17-jdk-slim“ auch gut zum Erstellen eines schlanken Bildes

    – Santanu

    22. August 2022 um 6:15 Uhr

Wenn Sie nach den kleinsten Docker-Images mit Alpine Linux und OpenJDK suchen, schauen Sie sich die Liberica JDK-Container bei DockerHub an https://hub.docker.com/r/bellsoft/liberica-openjdk-alpine
Die Bilder verfügen über Alpine und Liberica Lite, deren Größe für die Verwendung in Microservices optimiert ist. Es wird auch vom Spring-Team empfohlen https://spring.io/quickstart

Sie können dies versuchen (eclipse-temurin:17-jre-alpine), was etwa 50 MB komprimierter Größe entspricht
https://hub.docker.com/layers/eclipse-temurin/library/eclipse-temurin/17-jre-alpine/images/sha256-839f3208bfc22f17bf57391d5c91d51c627d032d6900a0475228b94e48a8f9b3?context=explore

Ich konnte immer noch kein OpenJDK-JRE-Image finden

Benutzeravatar von Paul Verest
Paul Verest

(Stand 2023) Keine verwenden openjdk:17- Bilder, denn was Sie möglicherweise erhalten, sind alte frühe JDK 17-Builds mit Sicherheitsproblemen!
An https://hub.docker.com/_/openjdk es ist klar

VERALTUNGSHINWEIS

openJDK 17 wird nicht mehr erstellt!
(und nicht gepflegt in https://github.com/docker-library/openjdk)


Während es früher einfacher war, eine beliebige Linux-Variante zu verwenden, müssen Sie jetzt eine andere Wahl treffen openJDK-Builds Docker-Images verwenden verschiedene Linux-Varianten.

ZB amazoncorreto – Amazon Linux,
Oracle JDK – Oracle Linux usw


Verschiedene Quellen empfehlen möglicherweise unterschiedliche Empfehlungen

ZB weiter https://docs.docker.com/sprache/java/build-images/ Verwendet eclipse-temurin

VON eclipse-temurin:17-jdk-jammy

Ein Update dazu – wir werfen noch einmal einen Blick auf das oben erwähnte Eclipse Adoptium-Problem (https://github.com/adoptium/temurin-build/issues/2683) deuten die neueren Kommentare darauf hin, dass sie nun mit der Produktion von JRE-Images begonnen haben.

Wir sind auf die Nutzung umgestiegen eclipse-temurin:17-jre-focal. Es gibt auch eine (etwas größere) 17-jre-centos7 und ein kleinerer 17-jre-alpineaber wir brauchen jetzt einige Bibliotheken, die nicht in Alpine sind.

Benutzeravatar von Introspective
Introspektiv

Als Ergänzung zur hervorragenden Antwort von @PaulVerest veröffentliche ich hier zum Nutzen anderer Neulinge wie mir die Dockerfile das funktioniert bei mir (Stand Mai 2023, gebaut und betrieben von einem Windows 10 PC):

FROM amazoncorretto:17.0.7-alpine

# Add app user
ARG APPLICATION_USER=appuser
RUN adduser --no-create-home -u 1000 -D $APPLICATION_USER

# Configure working directory
RUN mkdir /app && \
    chown -R $APPLICATION_USER /app

USER 1000

COPY --chown=1000:1000 ./myapp-0.0.1-SNAPSHOT.jar /app/app.jar
WORKDIR /app

EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "/app/app.jar" ]

Wenn Sie Ihren Container mit Folgendem erstellt haben:

docker build -t docker_myapp .

Führen Sie es dann über die Befehlszeile aus mit:

docker run -p 8080:8080 docker_myapp

Hinweis: Sie können es nicht über dieselbe Befehlszeile stoppen Ctrl+C. Um es zu stoppen, müssen Sie eine andere Befehlszeile öffnen und Folgendes tun:

docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS       PORTS                    NAMES
16dad8047672   docker_myapp   "java -jar /app/app.…"   7 hours ago   Up 7 hours   0.0.0.0:8080->8080/tcp   sharp_rode

Dann:

docker stop 16dad8047672   

Belems Benutzeravatar
Belem

In Ihrer Docker-Datei Verknüpfung:

FROM openjdk:17-alpine

1453440cookie-checkOpenJDK Java 17 Docker-Image

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy