Dockerfileビルドスクリプトを作成していて、bashコマンドを使用したいと思います。 RUNはデフォルトで/ bin / shを使用します。 代わりに/ bin / bashを使用するようにRUNに指示する方法はありますか?
いいえ、これは「/ bin / sh-c」にハードコードされています
もちろん、前のビルドステップで/ bin / bashを/ bin / shにリンクすることもできます。
結局、Dockerfileスクリプトを変更してファイルをコピーし、bashで使用していたリダイレクトを使用するのではなくそれを使用することになりました。
@dwatrous試してみRUN ["echo", "hello"]
は/bin/sh
IIRCでラップされません。 したがって、bashがどうしても必要な場合は、 RUN ["/bin/bash", "-c", "echo hello all in one string"]
呼び出すことができます。
それがあなたの問題を解決するかどうか私たちに知らせてください。
bashは、 RUN
手順で使用することにより、手動で使用できます。
bashに変更できるようにする意図や計画はありません。
これを文書化する可能性があるため、これをドキュメントの問題としてマークします。 この質問が出てきたのは3回目または4回目です。
PR: https :
https://github.com/docker/docker/pull/7489により、これを閉じることができます
それで、これの話は何ですか?
@ORESoftware上記の説明、およびSHELL
Dockerfile命令(Docker 1.12以降)を追加したhttps://github.com/moby/moby/pull/22489を参照して
単一のRUN
に別のシェルを使用する場合は、上記で説明したように、 Execフォーム(JSON)表記を使用し
RUN ["/bin/bash", "-c", "echo I am now using bash!"]
イメージ内(およびビルド中)のデフォルトシェルを変更する場合は、 https : SHELL
Dockerfile命令を使用します。
SHELL ["/bin/bash", "-c"]
RUN echo I am now using bash!
または、上記の組み合わせ
FROM ubuntu
RUN echo I am using the default (/bin/sh)
RUN ["/bin/bash", "-c", "echo I am using bash"]
SHELL ["/bin/bash", "-c"]
RUN echo I am using bash, which is now the default
RUN ["/bin/sh", "-c", "echo I am using /bin/sh"]
RUN ["echo", "I don't use a shell at all"]
私はパーティーに遅れていることを知っています、そしてはい、これは最善の解決策ではありませんが、それは私が必要としたもののために働きました
SDKをダウンロードして抽出した後、Dockerファイルでこれらの2つのコマンドを実行します
cp / bin / bash / bin / shを実行します
RUN echo "source〜 / google-cloud-sdk / path.bash.inc" >>〜/ .bashrc
RUNソース〜/ .bashrc
その後、gcloudコマンドはビルド中および実行時に使用可能になります
@qhaasは、それがOCI仕様に関係しているとは考えておらず、buildahの実装だけに関係していると考えています。
最も参考になるコメント
@ORESoftware上記の説明、および
SHELL
Dockerfile命令(Docker 1.12以降)を追加したhttps://github.com/moby/moby/pull/22489を参照して単一の
RUN
に別のシェルを使用する場合は、上記で説明したように、 Execフォーム(JSON)表記を使用しイメージ内(およびビルド中)のデフォルトシェルを変更する場合は、 https :
SHELL
Dockerfile命令を使用します。または、上記の組み合わせ