コンテナデータボリュームとはコンテナデータボリュームはディレクトリのマウントです。コンテナのディレクトリはホストマシンにマウントされ、ホストマシンとコンテナ間のファイル共有機能を実現します。 コンテナ データ ボリュームが必要なのはなぜですか?Docker の考え方は、アプリケーションと環境をイメージにパッケージ化することですが、データはどうでしょうか?データベースはもちろん、プロジェクトでは運用中に大量のログが生成されます。これらのログは開発者にとって非常に重要です。これらのログがあれば、運用中にどのような問題が発生したかを把握し、トラブルシューティングを行うことができます。 しかし、コンテナでは、プロジェクトが更新されて反復されるたびに、コンテナが削除され、新しいイメージに置き換えられます。この場合、これらのログファイルを保存したい場合、毎回ホストマシンにコピーすると、作業負荷が少し大きくなり、ログファイルが大きすぎると、コピー作業にも非常に時間がかかり、労力がかかります。そのため、このときは、コンテナデータボリューム機能を使用する必要があります。簡単に言えば、この機能は非常にシンプルで、ホストとコンテナ間のファイル共有機能を開くことです。Dockerコンテナで生成されたデータファイルは、リアルタイムでホストマシンに同期されます。逆に、ホストマシンで生成されたファイルもコンテナに同期されます。このようにして、双方向の伝送パイプラインが開かれます。 コンテナ間でデータ共有が実装されると、共有データのコピーが 1 つだけ存在し、それがホスト マシンに保存されるため、メイン コンテナとサブ コンテナの区別がなくなります。いずれかのコンテナを削除しても、他のコンテナのデータ同期には影響しません。 使用コンテナ データ ボリュームの使用は非常に簡単です。実行時に
上記のコマンドを実行すると、コンテナとホスト上に対応するディレクトリが自動的に作成され、ディレクトリ内で作成または変更されたファイルが自動的に同期されます。 データボリュームが使用されているかどうかを確認する方法コンテナがコンテナ データ ボリューム機能を使用しているかどうかを確認するには、
上記のコマンドを実行すると、フォーマットされた JSON 文字列が多数出力されます。この時点で、キー 「マウント」: [ { 「タイプ」:「バインド」 "Source": "/root/dockerContainer", # ホストマシンのディレクトリ "Destination": "/text", # コンテナのディレクトリ "Mode": "", "RW": true、# RW は読み取りおよび書き込み可能です。ro は読み取り専用で、ホスト マシン上のファイルのみを変更できます。 「伝播」: 「rprivate」 } ]、 名前付きマウントと匿名マウントパスを指定してマウントする上記の例では、指定されたパスマウントを使用します。つまり、ホスト パスとコンテナー パスを構成します。
名前付きマウント指定された名前のディレクトリにマウントします。 # /xxx はディレクトリ、xxx はボリューム名、スラッシュのない方がボリューム名です docker run -d -v ボリューム名: コンテナ ディレクトリ tomcat # ボリューム名があるディレクトリを探す docker volume examine volume name テストしてみましょう。まず、コンテナを作成し、ディレクトリをマウントします。
コンテナ情報を表示するにはinspectコマンドを使用します
印刷された情報で 「マウント」: [ { 「タイプ」:「ボリューム」、 "名前": "my_folder", 「ソース」: 「/var/lib/docker/volumes/my_folder/_data」、 「宛先」: 「/data/my_folder」、 "ドライバー": "ローカル", "モード": "z", 「RW」:真、 「伝播」: 「」 } ] 次にコンテナに入ります docker exec -it my_tomcat /bin/bash # このディレクトリはコンテナ内にも作成されています root@ef94ff8928a1:/data/my_folder# pwd /データ/私のフォルダ 匿名マウント匿名マウントとは、コンテナ ディレクトリのみが存在し、ホスト ディレクトリが存在しないことを意味します。そのため、生成されるディレクトリは長い暗号化された文字列になります。一般に、匿名マウントは推奨されません。暗号化された文字列は見つけにくくなるためです。
さあ、テストしてみましょう。まずコンテナを作成し、ディレクトリをマウントします。
コンテナ情報を表示するにはinspectコマンドを使用します
印刷された情報で 「マウント」: [ { 「タイプ」:「ボリューム」、 「名前」: 「df4c649772a5ae65716de8ede0607d0776f8c1e2eda1d87b3ec9eaf011b43616」、 「ソース」: 「/var/lib/docker/volumes/df4c649772a5ae65716de8ede0607d0776f8c1e2eda1d87b3ec9eaf011b43616/_data」、 「宛先」: 「/my_folder_2」、 "ドライバー": "ローカル", "モード": "", 「RW」:真、 「伝播」: 「」 } ] コンテナ間のデータ共有 - ボリューム -コンテナ A とコンテナ B でデータを共有する必要があるシナリオがあります。つまり、コンテナ A で変更されたコンテンツをコンテナ B で確認したいのです。では、この機能はどのように実現すればよいのでしょうか?次に、データ ボリューム コンテナー機能を使用できます。この機能では、2 つのコンテナーだけでなく、複数のコンテナー間でデータを同期することもできます。 1. 最初のコンテナ centos_1 を作成し、ホストに /data/centos ディレクトリをマウントします。ホストとコンテナのディレクトリは両方とも
2. 2 番目のコンテナを作成し、それを最初のコンテナにバインドします。--
3. 3番目のコンテナを作成し、2番目のコンテナcentos_2にバインドします。
次に、各コンテナの/data/centosディレクトリにファイルを作成します。
最後に、4つの環境の/data/centosディレクトリでlsコマンドを実行すると、すべてのコンテナで作成されたファイルを確認できます。このようにして、コンテナ間のデータ同期を実現できます。 [root@259efdc362b4 centos]# ls centos_1.java centos_2.java centos_3.java メイン.java これで、docker コンテナ データ ボリューム (名前付きマウントと匿名マウント) に関するこの記事は終了です。docker コンテナ データ ボリュームに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Node.js のイベント モジュールに関する知識ポイントのまとめ
>>: MySQL 学習: 初心者のための 3 つのパラダイム
この記事では、例を使用して、MySQL データベースの最適化のためのインデックス実装の原則と使用方法...
(Web ページの読み込み中に、コンテンツが多すぎて読み込みと待機が続くことがあります。このとき、...
序文低速システム コールとは、決して戻らない可能性があり、プロセスを永久にブロックするシステム コー...
Microsoft は T4 テンプレートを提供していますが、使用するのが非常に難しいと思います。ス...
<br />では、CSS 構文を巧みに使用してテーブルを美しくする方法を見てみましょう。...
目次序文プロトタイプ継承アドバンテージ欠点コンストラクタの継承アドバンテージ欠点組み合わせ継承寄生的...
123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...
HTMLページジャンプ: window.open(url, "", "...
今日の開発環境では、速いほど良いです。 「迅速なアプリケーション開発」、「アジャイル ソフトウェア開...
前提条件gitをインストールする必要があるインストール手順1. リモートリポジトリからpyenvをク...
Binlog は、MySQL データの変更を記録するために使用されるバイナリ ログ ファイルです。B...
環境ホストIP 192.168.0.9 Docker バージョン 19.03.2 docker-co...
序文偶然、30 分の Tomcat セッション時間は、セッションが作成された後、30 分間のみ有効で...
目次1. Dockerのセキュリティ問題2. Dockerアーキテクチャの欠陥とセキュリティメカニズ...
Windows Server 2016 アクティベーション キーを皆さんと共有したいと思います。wi...