Docker データ ストレージ ボリュームの詳細な説明

Docker データ ストレージ ボリュームの詳細な説明

デフォルトでは、コンテナ データの読み取りと書き込みはコンテナのストレージ レイヤーで行われます。コンテナが削除されると、そのコンテナ上のデータは失われます。したがって、コンテナ ストレージ レイヤーで書き込み操作が発生しないようにする必要があります。データの永続的なストレージを実現するには、データを保存するソリューションを選択する必要があります。現在、いくつかの方法があります。

  • ボリューム
  • バインドマウント
  • tmpfs マウント

次の図は、これら 3 つの手法を示しています。

ボリューム

ボリュームは、1 つ以上のコンテナーで使用できるホスト上の特別なディレクトリです。ボリュームには次の特性があります。

  • データボリュームはコンテナ間で共有および再利用できます
  • データボリュームへの書き込み操作はイメージに影響を与えません
  • デフォルトでは、コンテナが削除されてもデータ ボリュームは常に存在します。

データ ボリュームを使用する目的は、コンテナー内でデータを保持してコンテナー間でデータを共有できるようにしたり、データの損失を防いだりすることです (コンテナー ストレージ層に書き込まれたデータは失われます)。

データ ボリュームを使用する手順は、通常、次の 2 つのステップに分かれます。

  1. データボリュームを作成する
  2. -v または --mount パラメータを使用して、データ ボリュームをコンテナの指定されたディレクトリにマウントします。これにより、コンテナの指定されたディレクトリへのすべての書き込み操作がホスト マシン上のボリュームに保存されます。

ボリューム管理

ボリュームを作成します。

$ docker ボリューム作成 my-vol

ボリュームを表示:

$ dockerボリュームls
ローカルマイボリューム
$ docker ボリューム検査 my-vol
[
 {
  "ドライバー": "ローカル",
  「ラベル」: {},
  「マウントポイント」: 「/var/lib/docker/volumes/my-vol/_data」、
  「名前」: 「my-vol」、
  「オプション」: {},
  「スコープ」: 「ローカル」
 }
]

作成されたボリューム my-vol が/var/lib/docker/volumes/ディレクトリに保存されていることがわかります。このボリュームの今後の書き込みデータはすべて/var/lib/docker/volumes/my-vol/_dataディレクトリに保存されます。

ボリュームを削除するには:

$ docker ボリューム rm my-vol

または、未使用のボリュームをすべて削除します。

docker ボリュームのプルーニング

データボリュームをコンテナディレクトリにマウントする

ボリュームを作成したら、コンテナを実行するときに -v または --mount パラメータを指定してボリュームを使用できます。

--mountパラメータを使用します:

$ docker run -d \
 --name=nginxtest \
 --mount ソース = nginx-vol、マウント先 = /usr/share/nginx/html \
 nginx:最新

ソースはボリュームを指定し、宛先はコンテナー内のファイルまたはフォルダーを指定します。

または -v パラメータを使用します:

$ docker run -d \
 --name=nginxtest \
 -v nginx-vol:/usr/share/nginx/html \
 nginx:最新

マウントが成功すると、コンテナは /usr/share/nginx/html ディレクトリからデータを読み取ったり書き込んだりします。実際には、ホスト マシンの nginx-vol データ ボリュームからデータを読み取ったり書き込んだりします。したがって、ボリュームまたはバインドマウントは、コンテナーとホストがファイルを共有する方法とも考えられます。

-v パラメータは、ソースと宛先を区切るためにコロンを使用します。コロンの前半はソースで、後半は宛先です。

まだ存在しないデータ ボリュームをマウントすると、Docker によって自動的に作成されます。 (そのため、データボリュームを作成する必要はありません)

コンテナにマウントされるディレクトリが空のディレクトリでない場合、ディレクトリ内のファイルはデータ ボリュームにコピーされます。 (バインドマウントでは、ホスト上のディレクトリは常にコンテナにマウントされるディレクトリを上書きします)

-v パラメータと --mount パラメータはほぼ同じ機能を持ちます。唯一の違いは、サービス実行時にデータ ボリュームをマウントするには --mount パラメータのみを使用できることです。

読み取り専用データボリュームの使用

場合によっては、コンテナのデータ ボリュームを読み取り専用にする必要があります。これは、readonly オプションを追加することで実現できます。

$ docker run -d \
 --name=nginxtest \
 --mount ソース=nginx-vol、マウント先=/usr/share/nginx/html、読み取り専用 \
 nginx:最新

または -v パラメータを使用します:

$ docker run -d \
 --name=nginxtest \
 -v nginx-vol:/usr/share/nginx/html:ro \
 nginx:最新

ボリュームの使用シナリオ

こちらの記事を参照してください: Docker データストレージの概要

参考文献

https://docs.docker.com/storage/volumes/#マシン間でデータを共有する

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • Docker のコンテナ データ ボリュームの概要
  • Dockerでボリュームを管理する2つの方法
  • Dockerボリューム削除操作
  • Dockerボリュームのファイルマッピング方法
  • Dockerボリュームマウントの実装方法
  • Docker ボリュームの使用の詳細と例
  • Dockerはデータボリュームにデータを書き込む

<<:  Linux で MySQL をインストールする簡単な方法

>>:  ReactでCSSスタイルを動的に変更する2つの方法の詳細な説明

推薦する

Vue elementUI はツリー構造テーブルと遅延読み込みを実装します

目次1. 成果を達成する2. バックエンドの実装2.1 エンティティクラス2.2 データベース内のデ...

海外の無料写真素材サイトベスト9

良い画像素材のウェブサイトを見つけるのは難しいです。特に無料です。良い写真には非常に目を引く視覚効果...

jsドラッグ効果の原理と実装

ドラッグ機能は主に、ドラッグによる並べ替え、ポップアップ ボックスのドラッグと移動など、ユーザーがカ...

Vueプロジェクトでページジャンプを実装する方法

目次1. vue-cli デフォルト プロジェクトを作成する (babel のみを含む) 2. 作成...

Centos8 で Docker を使用して Django プロジェクトをデプロイする詳細なチュートリアル

導入この記事では、django + uwsgi + nginx デプロイメントを使用して、Docke...

Linux システムで PATH 環境変数を設定する方法 (3 つの方法)

1. Windows システムでは、JDK のインストールなど、多くのソフトウェアのインストールで...

MySQLステートメントを監視する方法の詳細な説明

クイックリーディングSQL ステートメントを監視する必要があるのはなぜか、監視方法と監視手段について...

HTMLタグを閉じるのを忘れないでください

Web 標準に準拠した Web ページの構築は、jb51.net が常に全員と議論しているトピックで...

MySQL の制限ページング最適化ソリューションの実装に関する簡単な説明

MySQL のページングステートメントの使用制限Oracle や MS SqlServer と比較す...

Win10 + Ubuntu 16.04 デュアルシステム 完璧なインストールチュートリアル [詳細]

必ずデータをバックアップすることを忘れないでください。データは貴重なものです! ! !コンピュータモ...

リフレッシュリダイレクトを実現する HTML ヘッドタグメタ

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...

Vue の img の src 画像アドレスの動的スプライシングの問題について

Vue での img の動的スプライシングを見てみましょう。src 画像アドレス、具体的な内容は次の...

Vue画像拡大鏡コンポーネントのカプセル化と使用方法の詳細な説明

Vue画像拡大鏡コンポーネントパッケージに基づいて、参考までに具体的な内容は次のとおりです。画像拡大...

コードレイン効果を実現するjQueryプラグイン

この記事では、コードレイン特殊効果を実現するためのjQueryプラグインの具体的なコードを参考までに...

EasyUEFI を使用して Windows 10 で USB ドライブなしで Ubuntu 18 をインストールする

1. BIOSを確認するまず、コンピュータの起動モードを確認します。win+R と入力し、msinf...