Docker は引数を受け入れるシェルスクリプトでエントリポイントをオーバーライドします 質問する

Docker は引数を受け入れるシェルスクリプトでエントリポイントをオーバーライドします 質問する

引数を受け入れるエントリポイントシェルスクリプトがあります-a -b

私は働いていますドッカーTomcat のエントリポイントを命令で上書きするファイル:

entrypoint: /usr/local/tomcat/entrypoint.sh -a param1 -b param2

とはドッカー実行代替?

docker run --entrypoint "/usr/local/tomcat/entrypoint.sh -a param1 -b param2" tomcat:jre8

動作しません

次のような結果になります:

docker: Error response from daemon: 
invalid header field value "oci runtime error: container_linux.go:247: 
starting container process caused \"exec:
\\\"/usr/local/tomcat/entrypoint.sh -a param1 -b param2\\\": 
stat /usr/local/tomcat/entrypoint.sh -a param1 -b param2: 
no such file or directory\"\n".

ご参考までに:

docker run --entrypoint "/usr/local/tomcat/entrypoint.sh" tomcat:jre8

Dockerの観点からは動作しますが、明らかにスクリプトは失敗します

ベストアンサー1

これは、コマンドを引用符で囲んでいるためです。

実行すると、docker run --entrypoint "/usr/local/tomcat/entrypoint.sh -a param1 -b param2" tomcat:jre8Docker は引用符で囲まれた内容をすべて単一のスクリプト ファイルとして扱います。

エラーからわかるように:

stat /usr/local/tomcat/entrypoint.sh -a param1 -b param2: 
no such file or directory\"\n".

statファイルを実行する前に、ファイルに対して を実行して、ファイルが存在するかどうかを確認します。

次のように、docker コマンドの最後にエントリポイントへの引数を配置します。

docker run --entrypoint <entrypoint.sh> <image:tag> <arg1> <arg2> <arg3>

コマンドは次のようになります:

docker run --entrypoint /usr/local/tomcat/entrypoint.sh tomcat:jre8 -a param1 -b param2 

公式ドキュメントのコードスニペットをご覧ください:

イメージのENTRYPOINTはCOMMANDに似ており、実行する実行ファイルコンテナが起動すると

https://docs.docker.com/engine/reference/run/#/entrypoint-default-command-to-execute-at-runtime

おすすめ記事