Docker: How to use bash with an Alpine based docker image?
我从openjdk:8-jdk-alpine创建了一个docker映像,但是当我尝试执行简单的命令时,出现以下错误:
1 2 3 4 5
| RUN bash
/bin/sh: bash: not found
RUN ./gradlew build
env: can't execute 'bash': No such file or directory |
- 对于Google员工:docker run --rm -i -t alpine /bin/sh
-
启动容器(以交互方式):docker exec -it container_id / bin / sh
高山docker镜像默认未安装bash。您将需要添加以下命令以获取bash:
1
| RUN apk update && apk add bash |
如果您使用Alpine 3.3+,则可以执行
1
| RUN apk add --no-cache bash |
保持docker映像大小较小。 (感谢@sprkysnrky发表评论)
- 不需要apk upgrade。
-
我更喜欢使用RUN /bin/sh而不是RUN bin/bash的@Yuva推荐
-
这完全取决于您,许多人需要bash特定功能。
尝试使用RUN /bin/sh代替bash。
-
OP要求重击。 sh不是bash。
-
但是无论如何,这是非常有用的评论-大多数人都可以使用sh-并且不需要额外的50mb图片大小
-
简单明了。大多数情况下,我们只需要运行糟糕的命令(ls,ps等),sh就可以解决这些情况。谢谢!
-
我也在寻找bash,但是sh做得很好!谢谢!
-
@kboom评论进入评论部分。这不是原始问题的答案。
-
@kboom bash程序包将alpine:3.8的大小增加了大约4MB,大约增加了一倍,但仍远远不足50MB。
-
@kboom我可以确认添加bash会增加大约4MB,而不是50MB。我只是将RUN apk add --no-cache python更改为RUN apk add --no-cache python bash,这增加了4MB。
-
该答案考虑到OP对/bin/sh和/bin/bash感到困惑;在任何情况下都将为人们提供帮助。
-
@ phil294我一直在寻找bash,因为我期待bash。相反,使用sh是完全可以接受的替代方法。
1
| RUN /bin/sh -c"apk add --no-cache bash" |
为我工作。
-
不需要RUN命令的初始部分。您可以直接写RUN apk add --no-cache bash
要安装bash,您可以执行以下操作:
1
| RUN apk add --update bash && rm -rf /var/cache/apk/* |
如果不想在图像上增加额外的尺寸,则可以使用alpine随附的ash或sh。
参考:https://github.com/smebberson/docker-alpine/issues/43