Docker:如何使用bash与一个基于阿尔卑斯山的Docker映像?

我从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
314679 次浏览

默认情况下,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的ashsh

参考:https://github.com/smebberson/docker-alpine/issues/43

如果你有这个选项(例如,如果你只是创建脚本),使用一个安装了bash的alpine映像,比如alpine-bash可能是聪明的。

官方狂欢图片是基于Alpine的,可以防止你每次都需要安装bash。简单地使用

docker pull bash

这篇文章于2016年10月19日下午6:43首次发表。