如何在运行 openjdk:17-oracle 的容器中安装 xargs

如何在运行 openjdk:17-oracle 的容器中安装 xargs

我正在尝试在运行 openjdk:17-oracle 的容器中安装 xargs,但我无法弄清楚该映像中存在什么包管理器。

FROM openjdk:17-oracle
RUN apt-get install findutils

引发错误:

 => ERROR [stage-1 4/4] RUN apt-get install findutils                                                                      0.5s
------
 > [stage-1 4/4] RUN apt-get install findutils:
#13 0.395 /bin/sh: apt-get: command not found
-

和其他几个人也是如此yum install findutils

我需要 xargs,因为 gradle 运行器会使用它来为我的 java 进程构建“执行”命令。

答案1

虽然没有记录,但我发现Oracle 镜像的问题跟踪器中对于基于 Oracle Linux 的图像:

RUN microdnf install findutils

对于基于 Alpine 的图像,命令如下:

RUN apk update && apk add findutils

答案2

要回答这个问题,首先需要找出这个容器基于什么样的基本操作系统环境(如果有的话)。

一种相当简单的方法是“检查”图像。您可以使用 Docker Desktop 或“docker inspect”命令执行此操作。

检查 Docker Desktop 中的镜像层

在这种情况下,我们可以看到“microdnf”被用于安装包。“microdnf”是“dnf”(“yum”的现代替代品)的精简版。也许这个图像是基于“ubi”图像(Red Hat 的精简版可再发行子集)...

然后,您还可以启动容器并进行实验。我指定了一个不同的入口点,因为否则您将得到一个 jshell,这对于查看镜像的构建方式并不是特别有用。

docker run --rm -it --entrypoint=/bin/bash openjdk:17-oracle

知道“microdnf”是您想要的工具;您只需在新层中使用以下内容制作衍生容器即可。

microdnf install findutils

相信是有帮助的。

相关内容