Java

如何在執行 openjdk:17-oracle 的容器中安裝 xargs

  • February 28, 2022

我正在嘗試將 xargs 安裝在執行 openjdk:17-oracle 的容器中,但我無法確定此映像中存在什麼包管理器。

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 runner 使用它來為我的 java 程序建構“執行”命令。

它並沒有真正記錄在案,但我在基於 Oracle Linux 的映像的 Oracle 映像的問題跟踪器中發現了這一點:

RUN microdnf install findutils

對於基於 Alpine 的圖像,命令將是:

RUN apk update && apk add findutils

要回答這個問題,您首先需要找出該容器基於哪種基本作業系統環境(如果有)。

一種相當簡單的方法是“檢查”圖像。您可以使用 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

相信這會有所幫助。

引用自:https://serverfault.com/questions/1094942