Bash'i Alpine tabanlı bir docker görüntüsü ile nasıl kullanabilirim?


211

Ben openjdk: 8-jdk-alpine bir docker görüntü oluşturdum ama basit komutları yürütmeye çalıştığınızda aşağıdaki hataları alıyorum:

RUN bash
/bin/sh: bash: not found

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

26
Google çalışanları için:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi

Kapsayıcıyı başlat (etkileşimli): docker exec -it container_id / bin / sh
user2243747

Yanıtlar:


337

Alpine docker görüntüsünde varsayılan olarak bash yüklü değildir. Almak için aşağıdaki komutları eklemeniz gerekir bash:

RUN apk update && apk add bash

Eğer kullanıyorsanız Alpine 3.3+o zaman

RUN apk add --no-cache bash

docker görüntü boyutunu küçük tutmak için. (@Sprkysnrky yorumuna teşekkürler)


4
apk upgradeGerekli değildir.
Matt

1
Ben RUN /bin/shyerine @ Yuva'nın recomendation kullanmayı tercih RUN bin/bash
Alex Montoya

1
Bu tamamen size bağlı, birçok insanın bashbelirli bir özelliğe ihtiyacı var .
anubhava

218

RUN /bin/shBash yerine kullanmayı deneyin .


35
OP bash istedi. sh bash değildir.
phil294

115
Ama bu yine de çok yararlı bir yorum - çoğu insan sh ile iyi olacak - ve 50mb görüntü boyutu gerektirmez
kboom

6
Kolay ve anlaşılır. Çoğu zaman sadece boktan komutları (ls, ps, neyse) çalıştırmamız gerekir, sh bu senaryoları kapsar. Teşekkürler!
Bevilaqua

6
Ben bash arıyordum, ama sh de yardımcı oldu :)
Vedran Maricevic.

6
@kboom bashpaketin boyutu yaklaşık 4 MB ekler alpine:3.8, kabaca iki katına çıkar, ancak yine de 50 MB'tan uzaktır.
valiano

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

benim için çalıştı.


1
RUN komutunun ilk kısmı gereksizdir. RUN apk add --no-cache bashDoğrudan yazabilirsiniz
Meiogordo

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.