如何在Alpine Linux Docker镜像中安装Oracle JDK 11?

27

我的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

我该如何解决这个问题?


uname -a 显示什么? - Matthieu
uname -a 显示:Linux b64957345808 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 Linux - DWG24
2个回答

44

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版本,请安装 edge/community 仓库中最新的 openjdk11 包:

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


2
谢谢您的建议,但由于某些原因,我的程序使用的是Oracle jdk11而不是openjdk11,并且我没有在openjdk11上仔细测试过我的程序。 - DWG24
嗨@Brucewayne-TheGeekKiller,你能更新一下哪里出了问题吗?我会尝试更新答案并提供相关信息。 - valiano
2
谢谢!任何可用的软件包都可以在这里找到 https://pkgs.alpinelinux.org/packages?name=openjdk11&branch=v3.11 建议先更新软件包列表,即 apk --update-cache add openjdk11 https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management#Update_the_Package_list - igor
我们需要登录到http://dl-cdn.alpinelinux.org/alpine仓库吗? - Kanagavelu Sugumar

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/*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接