Docker:如何在基于Alpine的Docker图像中使用bash?

rhfm7lfc  于 2022-11-22  发布在  Docker
关注(0)|答案(6)|浏览(166)

我从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
agxfikkp

agxfikkp1#

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
bvjxkvbb

bvjxkvbb2#

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

pqwbnv8z

pqwbnv8z3#

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

对我有用。

hmae6n7t

hmae6n7t4#

要安装bash,您可以执行以下操作:

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

如果您不想在图像中增加额外大小,可以使用alpine附带的ashsh
参考:https://github.com/smebberson/docker-alpine/issues/43

csbfibhn

csbfibhn5#

official bash image基于Alpine,您无需每次都安装bash。
docker pull bash
这首次发表于2016年10月19日下午6:43。

dba5bblo

dba5bblo6#

如果您有这个选项(例如,如果您只是在创建脚本),那么使用安装了bash的alpine映像(例如alpine-bash)可能会比较明智。

相关问题