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

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)


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.


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.


1
Początkowa część polecenia RUN jest niepotrzebna. Możesz po prostu napisać RUN apk add --no-cache bashbezpośrednio
Meiogordo

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.