293
votes

I created a docker image from openjdk:8-jdk-alpine but when I try to execute simple commands I get the following errors:

RUN bash
/bin/sh: bash: not found

RUN ./gradlew build
env: can't execute 'bash': No such file or directory
4
For googlers: docker run --rm -i -t alpine /bin/shNabil Kadimi
Start container ( interactively): docker exec -it container_id /bin/shuser2243747

4 Answers

471
votes

Alpine docker image doesn't have bash installed by default. You will need to add following commands to get bash:

RUN apk update && apk add bash

If youre using Alpine 3.3+ then you can just do

RUN apk add --no-cache bash

to keep docker image size small. (Thanks to comment from @sprkysnrky)

341
votes

Try using RUN /bin/sh instead of bash.

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

worked for me.

7
votes

To Install bash you can do:

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

If you do not want to add extra size to your image, you can use ash or sh that ships with alpine.

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