【发布时间】:2019-03-29 11:49:46
【问题描述】:
我正在尝试使用没有任何操作系统的 JRE 创建图像。我试过这个不工作的 Dockerfile。
FROM openjdk:11.0.1-jdk-oraclelinux7 as JDK
RUN jlink --no-header-files --no-man-pages --add-modules java.base,java.desktop,java.logging,java.sql --output /jre
FROM scratch
#FROM oraclelinux:7-slim
COPY --from=JDK /jre /jre
ARG JAR_FILE
COPY ${JAR_FILE} /app.jar
CMD ["/jre/bin/java", "-jar", "/app.jar"]
我收到以下错误:
standard_init_linux.go:190: exec user process caused "no such file or directory"
如果我用 oraclelinux 替换从头开始,它就可以正常工作。任何线索为什么我不能使用从头开始。使用scratch的原因是为了减小图像的大小。
感谢任何帮助。
【问题讨论】:
-
您确定要使用 Oracle 吗?我问是因为他们的执照......
-
我想从头开始创建映像,而不是 oraclelinux。 Oraclelinux 的使用只是调试的一部分。
-
我刚刚又看了一遍第一句话... docker 只是一组进程 + chroot + 网络虚拟化。需要系统。例如安装 JDK,使用专门的包管理器。
-
请参阅关于从头开始构建映像的 docker 文档。 docs.docker.com/samples/library/scratch 。我正在尝试做类似的事情,但它不起作用。
-
jlink生成的jre是静态二进制吗?如果不是这个二进制文件将依赖于操作系统共享库
标签: java docker dockerfile