1

私はこれらのテクノロジーに不慣れで、物事を理解しようとしています。そこで、Mesosphere が提供する基本的なチュートリアルに従い、ローカルにクラスター (2 つの VM) を作成することができたので、nodejs アプリケーションをデプロイしたいので、nodejs Express フレームワークとサーバーを起動するだけのスクリプトを含む Docker イメージを作成しました。docker イメージは docker registry で pujariamol/nodejs-express として見つけることができ、root レベルに runScript.sh というスクリプトがあります。

デプロイするために試した JSON は次のとおりです。

{
    "id": "app4", 
    "container": {
        "type":"DOCKER",
      "docker": {
        "image": "pujariamol/nodejs-express"
      }
    },
    "cmd":"echo hello > /tmp/out.txt",
    "cpus": 0.25,
    "mem": 512.0,
    "instances": 1
}

これにより、docker コンテナーがプルされ、開始されると思いました。また、runScript.sh を実行したかったので、cmd で './runScript.sh' を試していましたが、うまくいかなかったので、テスト目的で out.txt にテキストを書き込んでみましたが、何も動作しないようです。アプリケーションがデプロイされた瞬間、mesos はこのアプリの失敗ステータスを示します。マラソンにデプロイするためにクロム拡張ポストマンを使用しています。何が問題なのかわかりません。このアプリケーションを Marathon にデプロイするのを手伝ってください。さらに情報が必要な場合はお知らせください。

前もって感謝します。

4

2 に答える 2

1

Mesosphere についてはまったくわかりませんが、これをコンテナーで実行しようとしている場合:

echo hello > /tmp/out.txt

...その後、コンテナの寿命は非常に短くなります。Docker コンテナーは、最初のコマンドの間だけ実行され、echoすぐに終了します。

メソスフィアを使用せずに、コンテナをdocker run単独で正常に起動できますか? コンテナー ログを調べて、有用なエラーがあるかどうかを確認しましたか? これに使用docker logsでき、Mesosphere がこの情報へのインターフェイスを提供する可能性があります。

を実行しようとしている場合、コンテナの起動時に現在のディレクトリに./runScript.sh名前の付いたスクリプトがあることを確認しますか? runScript.shこれを機能させるには、ルート ディレクトリ ( /) に配置する必要があります。通常は、最初のコマンドへのフル パスを指定することをお勧めします (例: /runScript.sh、 または/usr/local/something/runScript.sh)。

于 2015-06-18T23:29:30.497 に答える
0

ラークスさん、返信ありがとうございます。はい、コンテナーとスクリプトを個別に確認しましたが、正常に動作していました。現在は機能していますが、これが理由かどうかはわかりません。したがって、仮想マシンでコンテナーを実行していて、ホスト マシン (Windows8) にある郵便配達員からジョブを作成していて、runScript.sh では機能しなかったため、それが起こっていたと思います。そのため、CURL cmd を使用して VM 内から試してみたところ、うまくいきました。コンテナーの IP アドレスを見つけてアクセスしようとするだけで、コンテナー サーバーにもアクセスできます。そのため、単一の URL からこれらのサーバーにアクセスする方法を見つけようとしています。とにかく、ラースクに感謝します。あなたのコメントを読む前に、コンテナがそのようなコマンドに対して短命になることを知りませんでした。

于 2015-06-22T17:55:23.853 に答える