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


211

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

26
对于Google员工:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi

启动容器(以交互方式):
docker

Answers:


335

默认情况下,高山docker映像未安装bash。您将需要添加以下命令来获取bash

RUN apk update && apk add bash

如果您使用,Alpine 3.3+那么您可以

RUN apk add --no-cache bash

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


4
apk upgrade不是必需的。
马特

1
我更喜欢使用@Yuva的推荐, RUN /bin/sh而不是 RUN bin/bash
Alex Montoya

1
这完全取决于您,许多人需要bash特定的功能。
anubhava

216

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


35
OP要求重击。sh不是bash。
phil294

115
但是无论如何,这是非常有用的评论-大多数人都可以使用sh-并且不需要额外的50mb图片大小
kboom,

6
简单明了。大多数情况下,我们只需要运行糟糕的命令(ls,ps等),sh就可以解决这些情况。谢谢!
Bevilaqua

6
我一直在寻找bash,但sh也有帮助:)
Vedran Maricevic。

6
@kboom bash程序包将的大小增加了约4MB alpine:3.8,大约增加了一倍,但仍远远不足50MB。
valiano

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

为我工作。


1
不需要RUN命令的初始部分。你可以随便写RUN apk add --no-cache bash,直接
Meiogordo

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.