如何在container-registry.oracle.com/graalvm镜像中安装软件?该镜像使用何种包管理器?
问题解答
1. 该镜像的包管理器情况
你使用的container-registry.oracle.com/graalvm/native-image:21镜像属于无预装包管理器的极简镜像。这类镜像仅包含运行GraalVM Native Image所需的核心组件,为了最小化体积,没有内置yum、dnf、apt-get这类常见包管理工具。
2. 在该镜像中安装软件的方法
由于没有包管理器,你可以通过以下几种方式实现软件安装:
方法一:下载预编译二进制包手动部署
以安装Maven为例,直接下载官方预编译的二进制包,解压后配置路径即可:
FROM --platform=linux/aarch64 container-registry.oracle.com/graalvm/native-image:21 # 下载、解压并配置Maven RUN wget https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz \ && tar -xzf apache-maven-3.9.6-bin.tar.gz \ && mv apache-maven-3.9.6 /opt/maven \ && rm apache-maven-3.9.6-bin.tar.gz \ && ln -s /opt/maven/bin/mvn /usr/local/bin/mvn # 验证安装 RUN echo " --- Maven version:"; mvn --version; echo "$M2_HOME" ; echo
方法二:换用带包管理器的基础镜像构建
如果需要频繁安装各类软件,更高效的做法是基于带有包管理器的Oracle Linux镜像,先安装GraalVM Native Image,再进行后续操作:
# 基于Oracle Linux 8镜像(自带dnf包管理器) FROM --platform=linux/aarch64 oraclelinux:8 # 安装GraalVM Native Image RUN dnf install -y graalvm21-native-image \ && alternatives --set java graalvm21-native-image \ && alternatives --set javac graalvm21-native-image # 安装基础工具 RUN dnf install -y wget unzip tar gzip # 安装Maven RUN wget https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz \ && tar -xzf apache-maven-3.9.6-bin.tar.gz \ && mv apache-maven-3.9.6 /opt/maven \ && rm apache-maven-3.9.6-bin.tar.gz \ && ln -s /opt/maven/bin/mvn /usr/local/bin/mvn # 验证环境 RUN echo " --- Java version:"; java --version; echo "$JAVA_HOME" ; echo RUN echo " --- Graal version:"; native-image --version; echo "$GRAALVM_HOME" ; echo RUN echo " --- Maven version:"; mvn --version; echo "$M2_HOME" ; echo
方法三:复制本地预编译二进制文件
若你已有适配aarch64架构的预编译软件二进制文件,可直接通过COPY指令从本地复制到镜像中并配置路径:
FROM --platform=linux/aarch64 container-registry.oracle.com/graalvm/native-image:21 # 从本地复制已解压的Maven目录 COPY ./apache-maven-3.9.6 /opt/maven RUN ln -s /opt/maven/bin/mvn /usr/local/bin/mvn # 验证安装 RUN mvn --version
内容的提问来源于stack exchange,提问作者Pwnstar
相关产品推荐
相关产品推荐

