我正在尝试在运行 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”命令执行此操作。
在这种情况下,我们可以看到“microdnf”被用于安装包。“microdnf”是“dnf”(“yum”的现代替代品)的精简版。也许这个图像是基于“ubi”图像(Red Hat 的精简版可再发行子集)...
然后,您还可以启动容器并进行实验。我指定了一个不同的入口点,因为否则您将得到一个 jshell,这对于查看镜像的构建方式并不是特别有用。
docker run --rm -it --entrypoint=/bin/bash openjdk:17-oracle
知道“microdnf”是您想要的工具;您只需在新层中使用以下内容制作衍生容器即可。
microdnf install findutils
相信是有帮助的。