web-dev-qa-db-ja.com

Dockerはdockerのホストでスクリプトを実行します-構成します

この質問を見ていただきありがとうございます。

したがって、私の質問は、docker-composeupディレクティブでスクリプトを実行する方法に関するベストプラクティスに関連しています。

現在、ホストとコンテナの間でボリュームを共有して、スクリプトの変更をホストとコンテナの両方に表示できるようにしています。構成ファイルの変更をポーリングする監視スクリプトに似ています。

スクリプトは、事前定義されたルールに従って変更に対してホストに作用する必要があります。

だから私の質問は:

Docker-compose upディレクティブで、またはサービスのdockerfileからこのスクリプトを開始して、コンテナーが上がるたびに「ウォッチャー」が行われている変更や書き込みを見つけられるようにするにはどうすればよいですか。

問題のコンテナは常にdebian/ubuntu OSで実行され、アーキテクチャに依存しない必要があります。つまり、ARMでも実行できる必要があります。

前もって感謝します

私も知りたいのですが、なぜ一部の人が理解していないという理由だけで質問が却下されたのですか。

コンテナ内ではなく、ホスト上でスクリプトを実行したい。ホストがネットワークインターフェイス構成を変更して、あらゆる環境に簡単に適応できるようにする必要があるホストが変更する必要がある繰り返します。これは、ユーザーにとってシームレスで、簡単に行う必要があります。 CONTAINER内で実行されているWebインターフェースで編集可能で、新しい環境に適応します。

私は現在、crontabに基づいてホスト上で実行されているスクリプトを使用してこれを行っています。 INSIDE a CONTAINERからホストでスクリプトを実行する方法のベストプラクティスと例を知りたいので、インストールオペレーターがdocker-composeupを実行するのと同じくらい簡単にデプロイできます。

ありがとうございました

11
Ilhicas

INSIDE a CONTAINERからホスト上でスクリプトを実行する方法のベストプラクティスと例を知りたいので、インストールオペレーターがdocker-composeupを実行するのと同じくらい簡単にデプロイできます。

あなたのケースに適用できるベストプラクティスはないようです。ここで提案されている回避策: Dockerコンテナからホストでシェルスクリプトを実行する方法は?client/serverトリックを使用することです。

  1. ホストは小さなサーバーを実行する必要があります(ポートを選択し、待機する必要がある要求タイプを指定します)
  2. コンテナは、起動後、このリクエストをそのサーバーに送信する必要があります
  3. 次に、ホストはスクリプトを実行し、必要な変更をトリガーする必要があります

これは重大なセキュリティ問題が発生する可能性があるため、自己責任で使用してください。

3
tgogos

スクリプトはフォアグラウンドで継続的に実行する必要があります。

Dockerfileで [〜#〜] cmd [〜#〜] ディレクティブを使用し、スクリプトをパラメーターとして定義します。

CLIを使用する場合は、docker run -d IMAGE SCRIPTを使用してください

0
Creek

docker-compose upのエイリアスを作成できます。このようなものを~/.bash_aliases(Ubuntuの場合)に入れてください:

alias up="docker-compose up; ~/your_script.sh"

コンテナからホスト上でスクリプトを実行できるかどうかはわかりませんが、可能であれば、重大なセキュリティ上の欠陥です。コンテナーは分離する必要があります。それがコンテナーを使用するポイントです。

0
charli