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
diugalde
quelle
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)

Anubhava
quelle
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.

Yuva
quelle
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.

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

So installieren Sie bash:

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

Wenn Sie Ihrem Bild keine zusätzliche Größe hinzufügen möchten , können Sie es verwenden ashoder shes wird mit Alpin geliefert.

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

Sahith Vibudhi
quelle