Dav*_*ary 92 java docker java-17
我们正在升级 docker 中的微服务以使用 Java 17,之前我们使用基础镜像 openjdk:11-jre-slim。Java 17对应的镜像是什么?
好像没有openjdk:17-jre-slim?事实上,似乎没有任何最新的 jre 映像 - 只有 jdks。11-jre-slim 映像似乎约为 75MB - 是否有合适的类似大小的 Java 17 映像?
我们过去也使用过高山图像。
San*_*anu 65
Oracle 镜像可从 Java-17 免费获得openjdk:17-oracle
Dockerfile:
FROM openjdk:17-oracle
Run Code Online (Sandbox Code Playgroud)
openjdk:17-jdk-slim还创建轻量级图像
Dockerfile:
FROM openjdk:17-jdk-slim
Run Code Online (Sandbox Code Playgroud)
Pau*_*est 32
(截至 2023 年)不要使用任何openjdk:17-映像,因为您可能得到的是旧的早期 jdk 17 版本,存在安全问题!在https://hub.docker.com/_/openjdk
上有明确的说明
弃用通知
openJDK 17 不再构建!
(并且不在https://github.com/docker-library/openjdk中维护)
虽然以前使用任何 Linux 风格都比较简单,但现在您需要做出选择,因为不同的openJDK 构建docker 镜像将使用不同的 Linux 风格。
例如 amazoncorreto - Amazon Linux、
Oracle JDK - Oracle Linux 等
不同的来源可能会有不同的推荐
例如在https://docs.docker.com/language/java/build-images/上使用eclipse-temurin
来自 eclipse-temurin:17-jdk-jammy
小智 16
如果您正在寻找带有 Alpine Linux 和 OpenJDK 的最小 Docker 镜像,请查看 DockerHub 上的 Liberica JDK 容器https://hub.docker.com/r/bellsoft/liberica-openjdk-alpine 镜像有 Alpine 和 Liberica Lite ,其大小经过优化,可用于微服务。Spring团队也推荐https://spring.io/quickstart
您可以尝试这个(eclipse-temurin:17-jre-alpine),压缩大小约为50MB
https://hub.docker.com/layers/eclipse-temurin/library/eclipse-temurin/17-jre-alpine/images/sha256-839f3208bfc22f17bf57391d5c91d51c627d032d6900a0475228b94e48a8f9b 3?上下文=探索
我仍然找不到 OpenJDK jre 映像
添加到 @PaulVerest 的出色答案,为了像我这样的其他新手的利益,我在这里发布了Dockerfile对我有用的答案(截至 2023 年 5 月,从Windows 10PC 构建和运行):
FROM amazoncorretto:17.0.7-alpine\n\n# Add app user\nARG APPLICATION_USER=appuser\nRUN adduser --no-create-home -u 1000 -D $APPLICATION_USER\n\n# Configure working directory\nRUN mkdir /app && \\\n chown -R $APPLICATION_USER /app\n\nUSER 1000\n\nCOPY --chown=1000:1000 ./myapp-0.0.1-SNAPSHOT.jar /app/app.jar\nWORKDIR /app\n\nEXPOSE 8080\nENTRYPOINT [ "java", "-jar", "/app/app.jar" ]\nRun Code Online (Sandbox Code Playgroud)\n如果您使用以下方式构建容器:
\ndocker build -t docker_myapp .\nRun Code Online (Sandbox Code Playgroud)\n然后,使用以下命令从命令行运行它:
\ndocker run -p 8080:8080 docker_myapp\nRun Code Online (Sandbox Code Playgroud)\n注意:您无法使用同一命令行来停止它Ctrl+C。要停止它,您需要打开另一个命令行并执行以下操作:
docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n16dad8047672 docker_myapp "java -jar /app/app.\xe2\x80\xa6" 7 hours ago Up 7 hours 0.0.0.0:8080->8080/tcp sharp_rode\nRun Code Online (Sandbox Code Playgroud)\n然后:
\ndocker stop 16dad8047672 \nRun Code Online (Sandbox Code Playgroud)\n