docker CMD/ENTRYPOINT が sh スクリプトを実行する問題の解決策: not found/run.sh:

docker CMD/ENTRYPOINT が sh スクリプトを実行する問題の解決策: not found/run.sh:

Dockerfile の設定に問題はありませんが、ENTRYPOINT コマンドを実行するとエラーが発生するのはなぜでしょうか?

コンテナは起動するとすぐに終了しました。

理由が見つかるまで、たくさんの情報を調べて長い間考えました。

COPY命令によりrun.shがコンテナにコピーされます。しかし、ローカルマシンはWindowsであり、デフォルトの改行文字が\nであるため、コピー後に実行することはできません。

解決策は簡単です。ファイル形式を LF に切り替えるだけです。

補足知識: docker でコンテナを起動すると、CMD によって呼び出される sh スクリプトの if コマンドが予期しないシンボル if[[ を報告します。 解決策

最近、Dockerfile でイメージを作成しました。コンテナを起動するために、CMD で sh スクリプト (start.sh) が呼び出されました。docker run で起動したところ、起動に失敗しました。docker logs container ID を実行したところ、次のエラーが見つかりました: Unexpected symbol if [[

外部 Linux システムで start.sh を直接実行することに成功しました。docker exec を介してコンテナに入り、コンテナ内でエラーなしで start.sh を呼び出しました。コマンドで起動する必要のあるすべてのプログラムが正常に起動しました。

スクリプトを直接実行すると問題ないのですが、docker run を経由するとエラーが発生してしまい困惑しています。

start.shのエラーコードセグメントは次のとおりです。

if [[ -e /home/dc/testnn-aaa.zip ]];then
 rm -rf /home/testnn-aaa
 解凍 -q -o -d /home testnn-aaa.zip
 echo "zip の解凍が完了しました" 
それ以外 
 echo "dc zip が存在しません"
フィ

確認して比較したところ、私の start.sh にもエラー文の前に if 文があるのにエラーが報告されないため、2 つの場所の違いは最初の if が単一の [] を使用していることであることがわかりました。コードを [] に変更すると成功します。変更内容は次のとおりです。

if [ -e /home/dc/testnn-aaa.zip ];then

docker CMD/ENTRYPOINT が sh script: not found/run.sh: を実行する問題を解決する上記の記事は、エディターがあなたと共有した内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerfile における ENTRYPOINT と CMD の違い
  • 非ルートユーザーを使用してDockerコンテナでスクリプト操作を実行する
  • Docker ファイルの保存パス、コンテナの起動コマンド操作の取得

<<:  MySql インデックスを表示および最適化する方法

>>:  レスポンシブ原則のソースコード分析のVue解釈

推薦する

Centos7環境でMySQL 5.6のインスタンスを複数作成する方法の詳細な説明

この記事では、CentOS 7 環境で MySQL 5.6 の複数のインスタンスを作成する方法につい...

mysql8.0 でユーザーを作成して権限を付与する際のエラーの解決方法の詳細な説明

質問1:エラーを報告する書き込み方法: GRANT OPTION を使用して、'123123...

htmlダウンロード機能の詳しい説明

新しいプロジェクトは基本的に終了しました。フロントエンドとバックエンドを分離して統合を完了したのは初...

MySQL全文検索の使用例

目次1. 環境整備2. データの準備3. ショーを始める4. 単語分割エンジン要約する参考文献1. ...

JavaScriptは、ユーザーがチェックボックスをオンにする必要があるプロトコルの例を実装します。

js では、ログインまたは登録を確認する前に、ユーザーが特定の契約書を読むように設定します (使用...

HTMLでカメラを読み込む方法

効果図: 全体的な効果: ビデオ読み込み中: 写真:ステップ1: HTML要素を作成するまず、HTM...

Web コンポーネントの内部イベント コールバックと問題点の分析

目次前面に書かれたWC とは何でしょうか?現在の欠陥1. コンポーネント内部イベントのコールバック2...

Navicat がデータベース データ構造をインポートする際に発生するエラー datetime(0) の SQL レポートの問題を解決します。

エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...

SQL文におけるGROUP BYとHAVINGの使用に関する簡単な説明

GROUP BY 句と HAVING 句を紹介する前に、まず SQL 言語の特殊な関数である集計関数...

MySQLトリガーの例の詳細な説明

目次トリガーとは何かトリガーを作成する複数の実行ステートメントを持つトリガーの作成制限と考慮事項要約...

React+Amapは緯度と経度をリアルタイムで取得し、住所を特定します

目次1. マップを初期化する2. マップポイント3. 位置決めを有効にする4. マップの変更を監視す...

HTML テーブルのオーバーフローの解決方法

テーブルが広い場合は、あふれてしまう可能性があります。たとえば、左と右の 2 つの div がありま...

Reactのdiffアルゴリズムの詳細な分析

Reactのdiffアルゴリズムの理解diffアルゴリズムは、 Virtual DOMの変更された部...

Jenkins の Docker のデプロイとインストール手順

まず、Docker がインストールされたサーバーが必要です。 (私はすでにこれをサーバーにインストー...