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

Posted

技术标签:

【中文标题】如何在 Alpine linux docker 镜像中安装 oracle jdk11?【英文标题】:How to install oracle jdk11 in Alpine linux docker image? 【发布时间】:2020-05-17 18:28:37 【问题描述】:

我的 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 时,我得到了这个段错误:

我该如何解决这个问题?

【问题讨论】:

uname -a 显示什么? uname -a 显示:Linux b64957345808 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 Linux 【参考方案1】:

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

【讨论】:

感谢您的建议,但是由于某种原因,我的程序使用的是Oracle jdk11,而不是openjdk11,并且我没有在openjdk11上仔细测试过我的程序。 嗨@Brucewayne-TheGeekKiller,你能更新一下什么不起作用吗?我会尝试用相关信息更新答案。 谢谢!任何可用的包都可以在这里找到pkgs.alpinelinux.org/packages?name=openjdk11&branch=v3.11 也建议先更新包列表,即apk --update-cache add openjdk11 wiki.alpinelinux.org/wiki/…【参考方案2】:

来自工作容器

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

【讨论】:

以上是关于如何在 Alpine linux docker 镜像中安装 oracle jdk11?的主要内容,如果未能解决你的问题,请参考以下文章

PlayWithDocker-Docker新手Linux

如何在 Alpine Linux Docker Container 中安装“Microsoft Access Driver (*.mdb, *.accdb)”驱动程序

docker 下 alpine 镜像设置时区的有效办法

docker 下 alpine 镜像设置时区的有效办法

sbt-native-packager:Alpine Docker Image 上的 Scala 应用程序失败,权限被拒绝

Alpine linux安装docker