Wie verwende ich Bash mit einem Docking-Image auf Alpenbasis?


210

Ich habe ein Docker-Image aus openjdk erstellt: 8-jdk-alpine, aber wenn ich versuche, einfache Befehle auszuführen, werden folgende Fehler angezeigt:

RUN bash
/bin/sh: bash: not found

RUN ./gradlew build
env: can't execute 'bash': No such file or directory

26
Für Googler:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi

Container starten (interaktiv): Docker exec -it container_id / bin / sh
user2243747

Antworten:


335

In Alpine Docker Image ist Bash standardmäßig nicht installiert. Sie müssen folgende Befehle hinzufügen, um zu erhalten bash:

RUN apk update && apk add bash

Wenn Sie verwenden Alpine 3.3+, können Sie einfach tun

RUN apk add --no-cache bash

um die Docker-Bildgröße klein zu halten. (Dank Kommentar von @sprkysnrky)


4
Das apk upgradeist nicht erforderlich.
Matt

1
Ich bevorzuge die Empfehlung von @Yuva RUN /bin/shanstelle von RUN bin/bash
Alex Montoya

1
Das liegt ganz bei Ihnen, viele Menschen benötigen bashspezielle Funktionen.
Anubhava

215

Versuchen Sie es mit RUN /bin/shanstelle von Bash.


35
OP bat um Bash. sh ist nicht bash.
Phil294

114
Aber dies ist trotzdem ein sehr nützlicher Kommentar - die meisten Leute werden mit sh gut zurechtkommen - und es sind keine zusätzlichen 50 MB Bildgröße erforderlich
kboom

6
Einfach und unkompliziert. Meistens müssen wir nur beschissene Befehle ausführen (ls, ps, was auch immer), sh deckt diese Szenarien ab. Vielen Dank!
Bevilaqua

6
Ich suchte nach Bash, aber sie half auch :)
Vedran Maricevic.

6
@kboom Das bashPaket erhöht die Größe um ca. 4 MB alpine:3.8, verdoppelt sie ungefähr, ist aber immer noch weit von 50 MB entfernt.
Valiano

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

arbeitete für mich.


1
Der erste Teil des RUN-Befehls ist nicht erforderlich. Sie können einfach RUN apk add --no-cache bashdirekt schreiben
Meiogordo

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.