docker が exec を実行するときのエラーの解決策: 1. スクリプトの最初の行を「/bin/bash」に置き換えます; 2. 「docker exec -d service_name /bin/bash -c '/opt」を実行します/start.sh'」。
この記事の動作環境: centos7 システム、Docker バージョン 20.10.11、Dell G3 コンピューター。
Docker exec はスクリプト ソリューションの実行に失敗しました
# #バックグラウンドの紹介
元のスクリプト
docker exec -it service_name /bin/bash -c '/opt/start.sh'
#!/bash nohup start1.sh > start1.log 2>&1 & sleep 5 nohup start2.sh 2>&1 & echo 'server started'
問題の場所
##1. 変則的なスクリプトの書き方##上記のコマンドから、docker 起動時の式がわかります /bin/bash
そしてスクリプトで指定されているのは、確かに/bash です。スクリプトの最初の行の内容がシェル スクリプト インタプリタのパスを指定していることは誰もが知っており、この指定されたパスは最初の行にのみ配置できます。ファイルの行。したがって、同じインタープリタを使用するように、スクリプトの最初の行を
/bin/bash に置き換える必要があります
#2。起動パラメータに問題があります
-it パラメーターは、docker exec の実行中に使用されます。
-t を使用すると、docker が疑似端末を割り当ててバインドできるようになります。
docker exec -d service_name /bin/bash -c '/opt/start.sh'
#!/bin/bash nohup start1.sh > start1.log 2>&1 & sleep 5 nohup start2.sh 2>&1 & echo 'server started'
docker チュートリアル
」以上がdocker 実行時の exec エラーの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。