Dockerコンテナのデータボリュームの詳細な説明

Dockerコンテナのデータボリュームの詳細な説明

何ですか

まず、Docker の概念を見てみましょう。

アプリケーションと実行環境をコンテナにパッケージ化します。実行はコンテナに付随して行われますが、データが永続化され、コンテナ間でデータを共有できることが期待されます。

Docker コンテナによって生成されたデータが、docker commit を通じて新しいイメージを生成してイメージの一部として保存されていない場合、コンテナが削除されると、データは自然に消えてしまいます。

Docker にデータを保存するにはボリュームを使用します。

一言で言えば、RedisのRDBとAOFに似ています。

私に何ができる?

ボリュームは、1 つ以上のコンテナーに存在し、Docker によってコンテナーにマウントされるが、Union File System に属していないディレクトリまたはファイルです。そのため、Union FileSystem をバイパスして、永続ストレージまたは共有データにいくつかの機能を提供できます。

ボリュームの設計目的はデータの永続性であり、コンテナのライフサイクルとは完全に独立しています。そのため、コンテナが削除されても、Docker はマウントされたデータ ボリュームを削除しません。

特徴:

  • データボリュームはコンテナ間でデータを共有または再利用するために使用できます
  • 音量の変更は直接影響します
  • データ量の変更はイメージ更新には含まれません
  • データ ボリューム コンテナのライフサイクルは、コンテナがそれを使用しなくなるまで続きます (--volumes from)

要約:

  • コンテナデータの永続性
  • 継承 + コンテナ間のデータ共有

データ量

直接コマンドの追加

docker run -it -v /host 絶対パス ディレクトリ:/コンテナ ディレクトリ イメージ名docker run -it -v /host 絶対パス ディレクトリ:/コンテナ ディレクトリ:ro イメージ名//コマンドでアクセス権を指定、ro: 読み取り専用

データボリュームが正常にマウントされているかどうかを確認します。

docker コンテナ ID を検査する

DockerFileを使用して追加する

ルートディレクトリに新しいmydockerフォルダを作成し、次のように入力します。

Dockerfile で VOLUME 命令を使用して、イメージに 1 つ以上のデータ ボリュームを追加できます。

DockerFileビルド

DockerFile の記述については、Tomcat などの DockerHub にある各イメージの DockerFile ファイルを参照できます: https://github.com/docker-library/tomcat/blob/300ac03f4696c761a81fa10afbb893f3368061de/8.5/jdk8/openjdk-buster/Dockerfile

#ボリュームテスト
Centosより
ボリューム ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD エコー "終了しました、-------成功1"
コマンド /bin/bash

ビルド後にイメージを生成する

新しいイメージ zzyy/centos を取得する

コンテナを実行する

上記の手順により、コンテナ内のボリュームディレクトリアドレスはすでにわかっており、対応するホストディレクトリはどこにあるか

述べる:

Docker はホスト ディレクトリをマウントします。Docker アクセスではディレクトリを開けません、権限が拒否されました

解決策: ディレクトリをマウントした後、--privileged=trueパラメータを追加します。

データボリュームコンテナ

何ですか

名前付きコンテナがデータボリュームをマウントし、他のコンテナはこれ(親コンテナ)をマウントすることでデータを共有します。データボリュームをマウントするコンテナをデータボリュームコンテナと呼びます。

コンテナ間の推移的な共有 (--volumes-from)

docker run -it --name dco2 --volumes-from dc01 zzyy/cenos // dc01 は最初に作成されたコンテナで、dco2 はデータ共有を実現するために dc01 を継承します。

データ ボリュームは親コンテナ (dc01) によってマウントされます。dc01 が dc02 と dc03 にマウントされ、その後削除された場合でも、データ ボリュームは有効なままです。

構成情報はコンテナ間で転送され、コンテナが使用しなくなるまでデータ ボリュームのライフ サイクルは継続されます。

要約する

Docker コンテナのデータボリュームに関する記事はこれで終わりです。Docker コンテナのデータボリュームについての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker データボリュームとデータコンテナの詳細な紹介と例
  • Dockerデータボリューム、データボリュームコンテナの詳細な紹介
  • Docker のコンテナ データ ボリュームの概要
  • Docker コンテナ データ ボリュームの名前付きマウントと匿名マウントの問題
  • Dockerでボリュームを管理する2つの方法
  • Docker データボリュームの一般的な操作コードの例
  • Dockerコンテナデータボリュームのマウントの簡単な概要
  • DockerはMySQLデータを保存するためにボリュームをマウントします

<<:  Navicat Premium が MySQL 8.0 に接続してエラー「1251」を報告する問題を解決する方法の分析

>>:  入力ボックスのコンテンツプロンプトと非表示機能を実装する JavaScript

推薦する

HTML+CSS+JSはナビゲーションバーのスクロールグラデーション効果を実現します

目次まず効果を見てみましょう:成し遂げる:要約:まず効果を見てみましょう: 成し遂げる: 1. ナビ...

CSS 読み込み効果の実装 パックマン

えーっと、名前はただの推測です 2333序文これは練習用の CSS デモです。何か間違っている点があ...

WeChat ミニプログラム 宝くじ番号ジェネレーター

この記事では、WeChatアプレットの宝くじ番号ジェネレータの具体的なコードを参考までに紹介します。...

新しい CSS :where および :is 疑似クラス関数とは何ですか?

:is と :where とは何ですか? :is()と:where()は、セレクターを作成するとき...

Vueデータ双方向バインディング実装方法

目次1. はじめに2. コードの実装2.1 目的分析2.2 実装プロセス2.2.1 エントリーコード...

ウェブサイトのビジュアルデザイン(画像とテキスト)における情報伝達の役割と方法

現代の Web ビジュアル デザインは、初期の情報の積み重ねから、その後のグラフィックスと抽象化、そ...

TS 数値区切り文字とより厳密なクラス属性チェックの詳細な説明

目次概要演算子の改良と正確なinstanceofよりスマートなオブジェクトリテラル推論固有のシンボル...

JSは10進数を16進数に変換するサンプルコードを実装します

序文コードを書くと、時々基数変換の問題に遭遇します。一般的な変換には、2進数、8進数、10進数、16...

myBatis で条件を削除する際のスプライシング問題を解決する

私は今日、mybatis を学び、データベースに対していくつかの簡単な追加、削除、変更、クエリを実行...

Vueのコンポーネントの詳細な説明

目次1. コンポーネントの登録2. コンポーネントの使用3. 父から息子へ4. 息子から父へ5. ス...

シンプルな計算機を実装する JavaScript コード

この記事では、参考までに、簡単な計算機を実装するためのJavaScriptの具体的なコードを紹介しま...

Docker に Kong ゲートウェイをインストールする方法の例

1. Dockerネットワークを作成する docker ネットワーク作成 kong-net 2. デ...

Docker Consul の概要とクラスター環境構築手順(グラフィカルな説明)

目次1. Dockerコンサルの概要2. nginxとconsulをベースにした自動検出と高可用性の...

Docker Swarmの概念と使用法の詳細な説明

Docker Swarm は、Docker によって開発されたコンテナ クラスター管理サービスです。...

MySQL の自己結合重複排除に関する注意事項

機能シナリオを簡単に説明しましょう。データ行フィールドは次のとおりです。名前開始日時タイプこの表では...