java - 如何在 Alpine linux docker 镜像中安装 oracle jdk11?

标签 java docker segmentation-fault java-11 alpine

我的 Dockerfile:

FROM frolvlad/alpine-glibc:latest

ADD jdk-11.0.6_linux-x64_bin.tar.gz /usr/java

ENV JAVA_HOME=/usr/java/jdk-11.0.6
ENV PATH=$JAVA_HOME/bin:$PATH

当我运行命令时 java -version在容器中,我得到了这个段错误:
enter image description here

我怎么解决这个问题?

最佳答案

frolvlad/alpine-glibc是一个支持 glibc 的 Alpine Linux 镜像,以及 jdk-11.0.6_linux-x64_bin.tar.gz很可能是大陆 Linux JDK glibc 构建。从理论上讲,这应该没问题,但可能有细微的 glibc 不兼容性导致了这种情况。
如果您正在 Alpine 上寻找 Java 11,您可以直接获取原版 Alpine 3.11 镜像,然后安装 openjdk11包在上面:

sudo docker run -it alpine:3.11

# apk add openjdk11

# java -version
openjdk version "11.0.5" 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-alpine-r0)
OpenJDK 64-Bit Server VM (build 11.0.5+10-alpine-r0, mixed mode)
如果您特别需要 11.0.6,请安装最新的 openjdk11 edge/community 的包裹存储库代替:apk add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community

关于java - 如何在 Alpine linux docker 镜像中安装 oracle jdk11?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60014845/

相关文章:

使用 Java 将 JavaPairRDD 转换为 Apache Spark 中的 DataFrame

docker - Docker Flask服务器容器无法通过主机访问

c - 快速排序算法给出段错误

c - 使用 char * 和 malloc 数组的 C 程序中的段错误

docker - docker 容器更改后 WSO2 丢失 API

c - 释放嵌套结构的指针时出现段错误

java - Tomcat 将 JAVA_HOME 设置为指向 JRE 而不是 JDK

java - 如何为 Java 程序创建 MSI Windows 安装程序?

java - 如何运行 Atmosphere 样本?

docker - 如何通过ENV变量在Docker中构建进程