Jak korzystać z bash z obrazem dokera na bazie Alpine?

211

Utworzyłem obraz dokera z openjdk: 8-jdk-alpine, ale kiedy próbuję wykonać proste polecenia, pojawiają się następujące błędy:

RUN bash
/bin/sh: bash: not found

RUN ./gradlew build
env: can't execute 'bash': No such file or directory
diugalde
źródło
26
Dla googlersów:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi,
Uruchom kontener (interaktywnie): docker exec -it
id_kontenera

Odpowiedzi:

335

Obraz dokera Alpine nie ma domyślnie zainstalowanej wersji bash. Musisz dodać następujące polecenia, aby uzyskać bash:

RUN apk update && apk add bash

Jeśli używasz Alpine 3.3+, możesz po prostu zrobić

RUN apk add --no-cache bash

aby zachować niewielki rozmiar obrazu dokera. (Dzięki komentarzowi @sprkysnrky)

anubhava
źródło
4
To apk upgradenie jest wymagane.
Matt
1
Wolę skorzystać z rekomendacji @Yuva RUN /bin/shzamiast zamiast RUN bin/bash
Alex Montoya,
1
To zależy wyłącznie od Ciebie, wiele osób potrzebuje bashokreślonej funkcji.
anubhava
218

Spróbuj użyć RUN /bin/shzamiast bash.

Yuva
źródło
35
OP poprosił o bash. sh to nie bash.
phil294
115
Ale i tak jest to bardzo przydatny komentarz - większość ludzi będzie w porządku z sh - i nie wymaga dodatkowych 50 MB wielkości obrazu
kboom
6
Łatwo i prosto. W większości przypadków musimy uruchamiać tylko gówniane polecenia (ls, ps, cokolwiek), sh obejmuje te scenariusze. dzięki!
Bevilaqua
6
Szukałem bashu, ale sh też mi pomógł :)
Vedran Maricevic.
6
@kboom bashpakiet dodaje około 4 MB do rozmiaru, z alpine:3.8grubsza podwajając go, ale wciąż daleko od 50 MB.
valiano
19
RUN /bin/sh -c "apk add --no-cache bash"

pracował dla mnie.

użytkownik1738546
źródło
1
Początkowa część polecenia RUN jest niepotrzebna. Możesz po prostu napisać RUN apk add --no-cache bashbezpośrednio
Meiogordo
1

Aby zainstalować bash, możesz:

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

Jeśli nie chcesz dodawać dodatkowego rozmiaru do obrazu, możesz użyć ashlub, shktóry jest dostarczany z alpejskim.

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

Sahith Vibudhi
źródło