如何在基于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.