我从openjdk:8-jdk-alpine创建了一个docker映像,我想使用bash,而不是sh作为我的shell,然而,当我尝试执行简单的命令时,我会得到以下错误:

RUN bash
/bin/sh: bash: not found

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

当前回答

尝试使用RUN /bin/sh代替bash。

其他回答

要安装bash,您可以这样做:

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

如果不想为映像增加额外的大小,可以使用附带alpine的ash或sh。

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

如果您可以选择(例如,如果您只是创建脚本),那么使用安装了bash的alpine映像(如alpine-bash)可能是聪明的。

默认情况下,Alpine docker镜像没有安装bash。你需要添加以下命令来获得bash:

RUN apk update && apk add bash

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

RUN apk add --no-cache bash

保持docker映像大小较小。(感谢来自@sprkysnrky的评论)

如果你只是想连接到容器,不需要bash,你可以使用:

docker run --rm -i -t alpine /bin/sh --login

尝试使用RUN /bin/sh代替bash。

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

为我工作。