結論
ずっとbashを使いたい
Docker 1.12から追加されたSHELLを使う。
SHELL ["/bin/bash", "-c"]
ずっとbashを使いたい(Docker 1.12未満)
/bin/shのシンボリックリンクを張り替える。
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
一時的にbashを使いたい
シェルを直接指定してコマンドを実行する。
RUN ["/bin/bash", "-c", "echo hello"]
Dockerfileでbashを使ういろいろ
Dockerfileのビルド時にsource等を使いたい場合,デフォルトのshellである/bin/shでは使えないため,/bin/bash等を使う必要が出てくる。
ググるとRUN ["/bin/bash", "-c", "echo hello"]などやRUN rm /bin/sh && ln -s /bin/bash /bin/shなどが上位にヒットする。
前者は一時的に/bin/bashで実行できるが全ての命令を/bin/bashで実行したい場合は煩雑である。
後者は/bin/shを削除するため,/bin/shも使いたいときは向かないが,SHELLが使えないDocker 1.12未満でも動くため,Dockerのバージョンが古い場合は便利である。
しかし,よくよく調べるとちゃんと公式ドキュメントに書いてあった。
Docker 1.12から追加されたSHELLを使えばデフォルトのshellを変更できる。
具体的には以下のように書く。
SHELL ["/bin/bash", "-c"]
再びshellを変更したい場合は SHELL ["/bin/sh", "-c"]と書けば変更することができる。