2

我需要创建一个基于 Ubuntu 的自定义映像,其中包含我需要使用 apt 安装的软件。例如:

sudo apt-get install pcscd 
sudo apt-get install pcsc-tools # same as pcsc-lite   

# For OMNIKEY for driver Then unpack the file and run the installer:
cd /home/cccam/ifdokccid_lnx_x64-3.7.0/ 
chmod 755 install
sudo ./install

而且我还希望该软件在我也将安装的 OpenJDK 1.8 64 位下运行。关键是我需要运行这样的命令。我怎样才能用 JIB 做到这一点?有没有办法让 JIB 使用 Docker 文件?有没有办法将这样的命令脚本传递给 JIB?

4

1 回答 1

2

Jib 不使用Dockerfile(即使没有安装 Docker 也可以使用);Jib 构建镜像的方式与 Docker CLI 构建镜像的方式根本不同Dockerfile(可重现与不可重现、声明式与命令式、Docker 和Dockerfile-less 构建与需要 Docker 守护程序和客户端、需要 root 权限与不是)。基本上,Jib 不会“运行”Dockerfile指令,尤其是那些RUN执行某些东西的指令;Jib 不提供/包含 Docker 运行时(这是 Jib 的要点之一)。

对于安装像 OpenJDK 这样的复杂软件包,最好的选择(目前)是准备一个自定义基础镜像,该镜像预装了所有这些软件包,并让 Jib 使用该镜像。请注意,最近的 Jib 版本可以指定本地 Docker 守护程序映像或 tarball 作为基础映像(除了远程注册表映像)

如果您只需要安装少量二进制文件,您可以使用该extraDirectories功能复制任意文件(Maven / Gradle)。下面是一个使用该功能安装 Stackdriver Debugger Java 代理的示例。

以防万一,您可以将 Jib 配置为运行任意ENTRYPOINTor CMD,或包含自定义脚本文件(使用该extraDirectories功能)并在运行时运行它们但我认为您并不是在问这个功能。我相信您的目标是在构建时安装额外的软件包。

于 2019-11-04T15:45:49.250 回答