問題タブ [docker-volume]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
249 参照

docker - Docker コンテナを起動して HTTP リクエストを処理する

ユーザーがプロジェクト内のファイルを管理する Web アプリケーションを構築しています。各ユーザーは複数のプロジェクトを持つことができ、各プロジェクトは複数のファイルを持つことができます。各プロジェクトが Docker ボリュームである Docker を使用してこれを実装しました。ユーザーが webapp インターフェイスのボタンをクリックしてプロジェクト内のファイルを変更すると、Web サーバーはワーカー (別の Docker インスタンス) を構成して起動し、Docker ボリューム内のファイルを変更します。これまでのところ、これはすべてうまく機能しています。

ただし、これらのプロジェクト ファイルを HTTP 経由で提供したいと考えています。私が考えている戦略は次のとおりです。

  1. Web サーバー (nginx など) は、ユーザーからの着信 HTTP 要求を受け入れます。
  2. Web サーバーは受信リクエストを検査して、どのプロジェクトがリクエストされているかを判断します。たとえば、URL が の場合、プロジェクトがリクエストされているsparkle-pony.myapp.comことがわかります。sparkle-ponyこのプロジェクトが存在しない場合、nginx は応答を返します404 Not Found
  3. Web サーバーは、ユーザーがログインしているかどうか、およびログインしているユーザーがプロジェクトを表示する権限を持っているかどうかも確認します。そうでない場合、Web サーバーは403 ForbiddenHTTP 応答で応答します。
  4. Web サーバーは、新しい Docker コンテナー (おそらく別の nginx プロセス) を構成して起動します。この構成の一部には、正しい Docker ボリュームを新しいコンテナーにマウントすることが含まれます。この新しく起動されたコンテナを「内側」コンテナと呼び、既存のコンテナを「外側」コンテナと呼びます。
  5. 外側のコンテナーは、この HTTP 要求を内側のコンテナーに渡すか、内側のコンテナーの応答のプロキシとして機能します。
  6. プロジェクトの適切な Docker ボリュームにアクセスでき、要求しているユーザーが適切なアクセス許可を持っていることを認識して安全な内部コンテナーは、URL パスをチェックし、Docker ボリュームから適切なプロジェクト ファイルを提供します。要求が適切に処理された後、内部コンテナーはシャットダウンします。

以上のことから、3 つの質問があります。

  1. これは合理的な戦略ですか?受信する HTTP リクエストごとに新しい Docker コンテナーを起動する必要がありますが、それで問題ないと思います...
  2. あるコンテナから別のコンテナに HTTP リクエストを渡す最良の方法は何ですか? それとも、外側のコンテナは内側のコンテナからの応答をプロキシする必要がありますか?
  3. このようなプロジェクトを設定する方法について、誰かがいくつかの指針や例を提供できますか? 私がまだ知らないツールやテクニックがあるかもしれません。

ありがとうございました!

0 投票する
2 に答える
5445 参照

docker - イメージ更新時の Docker ボリューム

私は Docker の初心者で、ボリュームのトピックをよりよく理解しようとしています。ここで私はそれを見ます:

  • コンテナーが作成されると、ボリュームが初期化されます。コンテナーの基本イメージに指定されたマウント ポイントのデータが含まれている場合、その既存のデータは、ボリュームの初期化時に新しいボリュームにコピーされます。(これは、ホスト ディレクトリをマウントする場合には適用されないことに注意してください。)
  • データ ボリュームは、コンテナ間で共有および再利用できます。
  • データ ボリュームへの変更は直接行われます。
  • イメージを更新する場合、データ ボリュームへの変更は含まれません。
  • コンテナー自体が削除されても、データ ボリュームは保持されます。
  • データ ボリュームは、コンテナーのライフ サイクルに関係なく、データを保持するように設計されています。したがって、Docker は、コンテナーを削除するときにボリュームを自動的に削除したり、コンテナーによって参照されなくなったボリュームを「ガベージ コレクション」したりすることはありません。

これを除いて、これは非常に明確です:

  • イメージを更新する場合、データ ボリュームへの変更は含まれません。

私はこれをよりよく理解するのに本当に苦労しています。おそらくいくつかの基本的な例で、誰かが私にもっと明確な概要を提供できますか?

ありがとう!

0 投票する
5 に答える
20988 参照

node.js - node_modules の docker-compose ボリュームが空です

私はDockerにかなり慣れていないので、自分のコンピューターにnode_modulesフォルダーをマップしたかった(デバッグ目的で)。

これは私の docker-compose.yml です

Docker for Mac を使用しています。実行するdocker-compose up -dとすべてうまくいきますが、コンピューターに node_modules フォルダーが作成されますが、空です。コンテナーの bash と ls node_modules に移動すると、すべてのパッケージがそこにありました。

自分のコンピューターでもコンテナーのコンテンツを取得するにはどうすればよいですか?

ありがとうございました

0 投票する
3 に答える
16805 参照

docker - Docker 名前付きボリュームが更新されない

名前付きデータ ボリューム (データ コンテナーではない) の使用方法について混乱しています。

docker 構成ファイルapp_srcを使用してマウントされた名前付きデータ ボリュームがあります。/usr/src/appただし、ソース コードを (ローカルで) 変更した後、イメージをビルドしてもボリュームが更新されません。

私はそのようにイメージを構築しています、

docker-compose -f development.yml buildそしてそれを実行しdocker-compose -f development.yml up -dます。

ボリュームが変わらないことを確認するために、実行中のコンテナにアタッチしましたが、ソース コードは更新されていません。

これが私のdocker構成ファイルdevelopment.ymlDockerfile私のwebサービスです。バージョン: '2'

そのようにホストをマウントすることで機能させることができました。

Docker 1.11.2を実行しているUbuntu 16.04を使用しています。私の理解は間違っていますか?私はドキュメントを見てみましたが、ボリュームを本当によく説明しているものを見つけることができました.

0 投票する
0 に答える
646 参照

php - Docker ボリュームが空で、ファイルが取得されていません

Docker をローカルで (そして最終的には本番環境で) セットアップしようとしていますが、現在、ボリュームを正しくマウントすることさえできません。Docker は過去 1 年間急速に変化しており、チュートリアルと git の問題が追いついていないため、明らかに時代遅れです。

私の質問は、docker コンテナー内の index.php ファイルはどこにありますか? ボリューム ディレクティブで指定されているにもかかわらず、表示されないのはなぜですか? nginx 設定で autoindex を有効にしたので、実際にディレクトリを確認して疑いを証明することができました。

私はWindows 10を使用しています

これが私のディレクトリツリーです:

これが私のdocker-composeファイルです:

そして私のDockerfile:

次に実行します:

次に、localhost にアクセスして、nginx のウェルカム ページを取得します。しかし、index.php がありません。何を与える?よろしくお願いします。

0 投票する
3 に答える
13922 参照

docker - minikube を使用した HostPath - Kubernetes

更新: minikubevm に接続し、ホスト ディレクトリがマウントされているのを確認しましたが、そこにファイルがありません。また、そこにファイルを作成すると、ホスト マシンには作成されません。それらの間にリンクがあります

kubernetes でアプリを開発するために、ホスト ディレクトリをマウントしようとしています。

ドキュメントが推奨するように、私は PC で kubernetes クラスターを実行するために minikube を使用しています。目標は、アプリを開発するための docker と kubernetes を使用して開発環境を作成することです。Docker がそこからコード アプリを読み取るように、ローカル ディレクトリをマウントしたいと考えています。しかし、それは仕事ではありません。どんな助けでも本当に感謝します。

私のテストアプリ(server.js):

私の Dockerfile:

私のポッド kubernetes 構成: (pod-configuration.yaml)

私のフォルダは次のとおりです。

hostPath ボリュームなしで Docker イメージを実行すると、もちろん機能しますが、問題は、変更のたびに、開発には実際には強力ではないイメージを再作成する必要があることです。そのため、ボリューム hostPath が必要です。

何か案が ?ローカル ディレクトリのマウントに失敗するのはなぜですか?

助けてくれてありがとう。