我正在尝试用openjdk 11构建一个高山码头映像。为此,我启动了一个高山容器:
docker run -it alpine:3.9 /bin/sh并运行以下程序:
export JAVA_HOME=/opt/openjdk-11
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_VERSION=11.0.2
export JAVA_URL=https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
export JAVA_SHA256=99be79935354f5c0df1ad293620ea36d13f48ec3ea870c838f20c504c9668b57
set -eux; \
\
wget -O /openjdk.tgz "$JAVA_URL"; \
echo "$JAVA_SHA256 */openjdk.tgz" | sha256sum -c -; \
mkdir -p "$JAVA_HOME"; \
tar --extract --file /openjdk.tgz --directory "$JAVA_HOME" --strip-components 1; \
rm /openjdk.tgz;在那之后,我可以确认有几件事似乎是正确的:
/ # ls -lah $JAVA_HOME/bin/java
+ ls -lah /opt/openjdk-11/bin/java
-rwxr-xr-x 1 668 668 8.5K Jan 18 05:20 /opt/openjdk-11/bin/java
/ # echo $PATH
+ echo /opt/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/opt/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/ # which java
+ which java
/opt/openjdk-11/bin/java但是,当我运行java本身时,我得到:
/ # java -version
+ java -version
/bin/sh: java: not found我就被赶出了集装箱。我是不是遗漏了什么?
发布于 2019-03-30 19:35:47
您获得java: not found的原因可能是动态链接失败。您可以使用ldd java验证这一点。
Alpine的libc (标准C库)实现使用musl-libc,而大多数其他Linux使用的是滑翔 (GNU的C库)。因此,标准的Linux软件构建在非阿尔卑斯分布式系统上,通常会针对glibc进行链接,并且在没有安装glibc兼容层的情况下不能在高山上运行。因此,您将需要一个OpenJDK 11阿尔卑斯山构建,特别是。
然而,不幸的是,目前还没有这样的构建。OpenJDK 11页指出:
以前在此页面上可用的Alpine构建在JDK 11 GA中已被删除。它没有准备好生产,因为它还没有经过足够彻底的测试,不足以被认为是一个GA构建。
备选办法是:
进一步的信息可在以下StackOverflow文章中获得:为什么Java 11基本码头映像如此之大?(openjdk:11-jre-slim)
更新:
从2/6/19开始,openjdk11包可在高山存储库中使用!可以通过以下方法从edge/community存储库抓取它:
apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community发布于 2023-03-22 20:15:42
高寒版本3.11提供了Openjdk11。安装:
https://serverfault.com/questions/960772
复制相似问题