AlpineベースのDockerイメージでbashを使用するにはどうすればよいですか?


211

openjdk:8-jdk-alpineからdockerイメージを作成しましたが、単純なコマンドを実行しようとすると、次のエラーが発生します。

RUN bash
/bin/sh: bash: not found

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

26
グーグルの場合:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi、2018

コンテナーを(対話的に)開始します:docker exec -it container_id / bin / sh
user2243747

回答:


337

Alpine Dockerイメージには、デフォルトでbashがインストールされていません。取得するには、次のコマンドを追加する必要がありますbash

RUN apk update && apk add bash

Alpine 3.3+あなたが使用しているなら、あなたはただ行うことができます

RUN apk add --no-cache bash

Dockerイメージサイズを小さく保つため。(@sprkysnrkyからのコメントに感謝)


4
apk upgrade必要とされていません。
Matt

1
RUN /bin/sh代わりに@Yuvaを使用することをお勧めし ます RUN bin/bash
Alex Montoya

1
それは完全にあなた次第であり、多くの人々はbash特定の機能を必要とします。
anubhava

219

RUN /bin/shbashの代わりに使用してみてください。


35
OPがbashを要求しました。shはbashではありません。
phil294 2018年

115
しかし、これはとにかく非常に便利なコメントです-ほとんどの人はshで大丈夫です-そしてそれは追加の50MBの画像サイズを必要としません
kboom

6
簡単でわかりやすい。ほとんどの場合、必要なコマンド(ls、psなど)を実行するだけでよく、shはこれらのシナリオをカバーします。ありがとう!
Bevilaqua

6
私はbashを探していましたが、shも
役に立ちました

6
@kboom bashパッケージはのサイズに約4MBを追加しalpine:3.8、おおよそ2倍にしますが、それでも50MBには程遠いです。
valiano

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

私のために働いた。


1
RUNコマンドの最初の部分は不要です。あなたはRUN apk add --no-cache bash直接書くことができます
Meiogordo

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.