Docker:如何将 bash 与基于 Alpine 的 docker 图像一起使用?

Docker: How to use bash with an Alpine based docker image?

我从 openjdk:8-jdk-alpine 创建了一个 docker 图像,但是当我尝试执行简单的命令时,出现以下错误:

RUN bash
/bin/sh: bash: not found

RUN ./gradlew build
env: can't execute 'bash': No such file or directory

Alpine docker 图片没有默认安装 bash。您将需要添加以下命令以获取 bash:

RUN apk update && apk add bash

如果您使用的是 Alpine 3.3+,那么您可以这样做:

RUN apk add --no-cache bash

保持 docker 图片尺寸小。 (感谢@sprkysnrky 的评论)

尝试使用 RUN /bin/sh 而不是 bash。

RUN /bin/sh -c "apk add --no-cache bash"

对我有用。

要安装 bash 你可以这样做:

RUN apk add --update bash && rm -rf /var/cache/apk/*

如果您不想给您的图像添加 额外尺寸,您可以使用 alpine 附带的 ashsh

参考:https://github.com/smebberson/docker-alpine/issues/43

如果您有选择(例如,如果您只是创建脚本),使用安装了 bash 的 alpine 图像,例如 alpine-bash 可能会很聪明。