在临时 Docker 映像上安装 Bash

Luí*_*usa 8 docker dockerfile

我目前正在使用第三方 Docker 映像,其 Dockerfile 基于空映像,从指令开始FROM scratch

如何在这样的映像上安装 Bash?我尝试向 Dockerfile 添加一些额外的命令,但显然该RUN指令本身需要 Bash。

Dav*_*aze 1

当你启动 Docker 镜像时,FROM scratch你什么也得不到。通常,使用其中一种方法是在主机上构建静态二进制文件(或者现在在早期的 Dockerfile 构建阶段),然后将COPY其构建到映像中。

FROM scratch
COPY mybinary /
ENTRYPOINT ["/mybinary"]
Run Code Online (Sandbox Code Playgroud)

没有什么可以阻止您创建派生映像并向COPY其中添加其他二进制文件。您必须专门构建静态二进制文件或安装完整的动态库环境。

如果您这样做是为了尝试调试容器,则图像中可能没有其他内容。这意味着您可以使用 shell 执行的一系列操作非常无聊。另一个是您不会拥有您习惯的标准工具集(没有 anls或 a cp)。如果您可以不用 bash 的各种扩展,那么BusyBox是一个小工具,设计用于在有限的环境中静态构建和安装,它提供了大多数标准工具的最小版本。