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

DWG*_*G24 14 java segmentation-fault docker alpine-linux java-11

我的 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
Run Code Online (Sandbox Code Playgroud)

当我java -version在容器中运行命令时,我得到了这个段错误: 在此处输入图片说明

我怎么解决这个问题?

val*_*ano 21

frolvlad/alpine-glibc是一个支持 glibc 的 Alpine Linux 镜像,jdk-11.0.6_linux-x64_bin.tar.gz很可能是大陆 Linux JDK glibc 构建。从理论上讲,这应该没问题,但可能有细微的 glibc 不兼容性导致了这种情况。

如果您正在寻找 Alpine 上的 Java 11,您可以获取 vanilla 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)
Run Code Online (Sandbox Code Playgroud)

如果您特别需要 11.0.6,请安装存储库的最新openjdk11edge/community

apk add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community

  • 感谢您的建议,但是由于某种原因,我的程序使用的是Oracle jdk11,而不是openjdk11,并且我没有在openjdk11上仔细测试我的程序。 (2认同)
  • 谢谢你!任何可用的软件包都可以在这里找到 https://pkgs.alpinelinux.org/packages?name=openjdk11&branch=v3.11 还建议首先更新软件包列表,即 `apk --update-cache add openjdk11` https://pkgs.alpinelinux.org/packages?name=openjdk11&branch=v3.11 /wiki.alpinelinux.org/wiki/Alpine_Linux_package_management#Update_the_Package_list (2认同)

小智 12

从工作容器

FROM alpine:3.14

RUN  apk update \
  && apk upgrade \
  && apk add ca-certificates \
  && update-ca-certificates \
  && apk add --update coreutils && rm -rf /var/cache/apk/*   \ 
  && apk add --update openjdk11 tzdata curl unzip bash \
  && apk add --no-cache nss \
  && rm -rf /var/cache/apk/*
Run Code Online (Sandbox Code Playgroud)