引数を受け入れるエントリポイントシェルスクリプトがあります-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:jre8
Docker は引用符で囲まれた内容をすべて単一のスクリプト ファイルとして扱います。
エラーからわかるように:
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