2017-12-20 18 views
1

シェル形式とexec形式のコマンドは何ですか?私は、シェルフォームとexecフォームの明確なアイデアを得るためにいくつかのドキュメントを見てきました。しかし、すべて私に混乱して見えた。誰もこの2つのフォームの違いは何かを理解するのに役立つことができますか?
PS:ドッキングファイルの指示(例:RUN、CMD、ENTRYPOINT)を調べている間、私はこれらの条件に遭遇しましたが、ドッカーの状況ではなく一般的にその違いを知りたいと思います。シェルフォームとexecフォームとは何ですか?

+0

あなたのQのタグとして、おそらく見出しに 'docker'を含めるとうまくいくでしょう。がんばろう。 – shellter

答えて

1

ドッカーシェルの構文(RUNENTRYPOINT、およびCMDという文字列)は、その文字列をパラメータとして/bin/sh -cに実行します。これにより、変数、サブコマンド、パイプ出力、連鎖コマンド、およびその他のシェルの便利さを拡張するシェルが提供されます。

RUN ls * | grep $trigger_filename || echo file missing && exit 1 

exec構文では、インクルードするargsを指定するバイナリが実行されますが、シェル解析の機能はありません。ドッカーでは、これをjson形式の配列で指定します。

RUN ["/bin/app", "arg1", "arg2"] 

exec構文の利点は、起動されたプロセスからシェルを削除することであり、シグナル処理が妨げられる可能性があります。シェル構文で/bin/sh -cを使用してコマンドを再フォーマットすると、エントリポイントとcmdの連結が壊れることもあります。

関連する問題