我从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
我从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。
其他回答
默认情况下,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"
为我工作。
要安装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)可能是聪明的。