問題タブ [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 に答える
322 参照

docker - Docker での永続的なコンテナー データのさまざまな戦略

基本的に、docker コンテナーでデータを管理する 4 つの異なる方法を見てきました。

  1. コンテナ内で「エフェメラル」ボリュームを使用 - コンテナが削除されるとデータが削除されます
  2. ホスト上のコンテナーを Docker コンテナー内のボリュームにマッピングする - テスト目的でのみ推奨
  3. 「データ コンテナ」を作成し、そのコンテナ ボリュームを他のコンテナにマッピングする
  4. Docker「データボリューム」を作成し、それを他のコンテナにマッピングする

私が理解している限り、代替案 3 と 4 が最も推奨されるアプローチですが、さまざまなアプローチの利点/欠点は何ですか?

私が意味することを説明するためのいくつかのコード:

データ コンテナー

ここで説明: https://docs.docker.com/engine/tutorials/dockervolumes/#/creating-and-mounting-a-data-volume-container

データ量

ここで説明: https://docs.docker.com/engine/reference/commandline/volume_create/

さまざまな「docker volume」コマンドを使用してボリュームを維持する

使用事例

jira、bitbucket、jenkins、sonar、nexus を docker コンテナーとして実行し、アプリケーション データを可能な限りシンプルかつ信頼性の高い方法でバックアップできます :-)

0 投票する
1 に答える
1462 参照

nginx - ビルドを共有する名前付き Docker ボリュームが更新されない

私が働いている会社の開発担当者から、Docker で少し違うことをするように頼まれましたが、私も慣れています。目標は、次の責任を持つ 2 つのコンテナーを持つことです。

コンテナー A: フロントエンドの反応アプリケーションをビルドし、バンドルを というディレクトリに配置するノード コンテナーapp/dist/。これが完了すると、コンテナーは実行を停止します。

コンテナー B: から静的ファイルをサーバーする alpine nginx コンテナー/usr/share/nginx/html/app

<Container A>/app/distコンテナ A に構築されたファイルは、 にマウントされるボリュームを使用してコンテナ B に提供され<Container B>/usr/share/nginx/html/appます。

パブリックにアクセス可能なポートと nginx コンテナーの間に HAProxy レイヤーがあることに注意してくださいapp

上記のタスクは、次のような docker compose ファイルを使用して編成されています。

これは現在、docker 構成ファイルが初めてビルドされるときにのみ機能します。ボリュームが作成されると、ボリューム内のファイルは更新されなくなります。名前付きボリュームは確立後に更新できないと読みましたが、確認できません。実行を伴う回避策を見つけましたdocker-compose rm --force && docker volume webapp_build rmが、CI サービスが非常に遅くなるため、可能であればキャッシュされたコンテナーを強制終了する必要はありません。

何か明確にできることがあれば教えてください (ここには多くの可動部分があることを理解しています)。私は docker 2 ベータ版も使用していますが、それによって私がここで行ったことをどのように変更できるかわかりません。

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

docker - ファイルを docker コンテナーからホストに公開する

django アプリを保持する docker コンテナーがあります。静的ファイルが作成され、静的フォルダーにコピーされます。
コンテナー フォルダーの階層:

Docker イメージをビルドする前に./manage.py collectstatic、静的ファイルが/var/django/staticフォルダーにあるように実行します。アプリを公開して静的ファイルを提供するために、ホストに nginx があります。問題は、ホスト上の静的フォルダーと指定されたフォルダーの間でボリュームを作成すると、docker コンテナーを実行すると、/var/django/staticコンテナー内のフォルダーが削除されることです (削除ではなくマウントされます)。これを克服する方法はありますか?のようにボリュームを設定しますが、ドッカーに現在のファイルも取得するように指示しますか?

0 投票する
1 に答える
3273 参照

go - Docker エラー: ボリュームがメモリ内に存在しないドライバーを指定しています

ドキュメントによると、Docker ボリューム用の「インメモリ」ドライバーがあります: https://docs.docker.com/registry/storage-drivers/inmemory/

純粋にテスト目的であれば、メモリ内ストレージ ドライバを使用できます。このドライバーは、オブジェクト ストレージにローカル メモリを使用する storagedriver.StorageDriver インターフェイスの実装です。

しかし、次のように使用しようとすると:

次の出力が得られます。

何か不足していますか、それとも「インメモリ」ドライバーを何らかの方法でインストールする必要がありますか?

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

caching - docker ビルドのパッケージ マネージャーのダウンロードをキャッシュする方法は?

ホストから実行するcomposer installと、ローカルの composer キャッシュにヒットします。

ただし、Dockerfile にコンテナーを構築する場合:

私はすべてのものをダウンロードします。

それは当然のことですが、私はそれを避けたいと思っています。再構築した場合でも、すべてを再度ダウンロードします。

他の docker プロジェクトでも再共有できる、composer 用のユニバーサル キャッシュが必要です。

これを調べたところ、Dockerfile でボリュームを定義する方法が見つかりました。

私はそれを自分のファイルに追加しDockerfile、ファイルを一度だけダウンロードし、その後キャッシュにヒットすることを期待していました.

それでも、たとえばフラグをcomposer削除してを再実行すると、ビルド時にキャッシュにヒットすることが予想されましたが、それでもベンダーを再度ダウンロードします。-odocker build .

docker コンテナ内にデータキャッシュを持つために、ボリュームはどのように機能するはずですか?

0 投票する
1 に答える
43 参照

docker - 共有フォルダにデータが含まれていません

でボリュームを作成しました

ここで、このボリュームを 2 つのコンテナーの共有フォルダーとして使用したいと考えています。したがって、私の docker-compose.yml は次のようになります。

app1ファイルが書き込まれていることがわかりますが、調べて/some/folderみると空です。app2/another/folder

私は何を間違っていますか?

0 投票する
1 に答える
534 参照

docker - Docker 共有ボリュームの作成

2 つのホスト間で共有される Docker ボリュームを作成しようとしています。2 つのホスト A と B があるとします。次のコマンドを使用してホスト A にボリュームを作成すると、次のようになります。

ボリュームを検査した後の結果は次のとおりです。

私の質問は: ボリュームのマウントポイント ディレクトリがディレクトリ /tmp/dir ではなく、デフォルトの docker ボリュームの場所を指しているのはなぜですか? ディレクトリ ホスト B/tmp/dir のデータが共有可能になるとどのように考えることができますか?

前もって感謝します!

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

docker - Docker コンテナーのデータ ボリュームをバージョン管理する方法は?

Docker コンテナーで Jenkins を実行したいのですが、このスレッドの理解によると、コンテナーのデータを管理するためのベスト プラクティスは、Docker の新しいボリューム APIを使用することです (データを失うことなく Jenkins コンテナーを更新できます)。

どういうわけかデータが失われるのではないかと心配しているので、Git などのバージョン管理システムを使用して保存したいと考えています。そうすれば、チームのビルドで行われた変更を追跡し、誰かが混乱した場合に物事を再び機能させることができます.

私には明らかでない問題は、データをバージョン管理する方法ですか? また、復元されたデータを使用してコンテナーをフラッシュで実行できるようにしたい (単純なスクリプト/コマンド)

バージョン管理システムはここでは問題ではないことに注意してください。変更を追跡し、何かが壊れた場合に「システム」をすばやく復元できるように、コンテナーのデータ (ボリューム) を操作するためのベスト プラクティスを探しています。