Docker のコンテナ データ ボリュームの概要

Docker のコンテナ データ ボリュームの概要

Dockerコンテナのデータ量

データがすべてコンテナ内にある場合、コンテナを削除するとデータが失われるため、データが永続的に保持されることが期待されます。
たとえば、MySQL コンテナでは、MySQL コンテナが削除されてもデータが失われないように、データをローカルに保存できることが期待されます。
コンテナ間でデータを共有する技術があります。Docker コンテナで生成されたデータをローカル コンピューターに同期できます。これがボリューム技術です。これは、コンテナ内のディレクトリを Linux にマウントするデータ マウント テクノロジです。

ここに画像の説明を挿入
マウント後、コンテナ内で実行した操作は Linux ホストに同期されます。

データボリュームの使用

方法1: コマンド-vを使用して直接マウントする

docker run -it -v ホストディレクトリ: コンテナディレクトリ#test[root@sumarua home]# docker run -it -v /home/ceshi:/home centos /bin/bash

# 起動後、docker examine container id で確認できます] 

ここに画像の説明を挿入

MySQL データの永続性

[root@sumarua home]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=666666 --name mysql mysql5.7

名前付きマウントと匿名マウント

#匿名マウント -v コンテナパス docker run -d -p --name nginx01 -v /etc/nginx nginx
#すべてのボリュームを表示 docker volume ls

ここに画像の説明を挿入

# 名前付きマウント# -v ボリューム名: コンテナ内のパス docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx nginx
#dockerボリュームlsの表示 

ここに画像の説明を挿入

ボリュームがマウントされている特定の場所を確認できます

docker volume examine [ボリューム名]

ここに画像の説明を挿入

ディレクトリが指定されていない場合、Docker コンテナ内のすべてのボリュームは/var/lib/docker/volumes/xxxx/_dataにあります。
名前を付けてマウントすると、ボリュームを簡単に見つけることができます。
名前付きマウント、匿名マウント、または指定パスマウントであるかどうかを判断する方法

-v コンテナ内のパス #匿名マウント -v ボリューム名: コンテナ内のパス #名前付きマウント -v /host パス: コンテナ内のパス #指定パスマウント

拡大する:

# -v コンテナ パスを使用して読み取りおよび書き込み権限を変更します: ro rw ro readonly #読み取り専用 rw readwrite #読み取りおよび書き込み可能 #デフォルトで読み取りおよび書き込み可能 #コンテナ権限が設定されると、コンテナはマウントするコンテンツを制限します #ro このパスはホスト マシン経由でのみ操作でき、コンテナ内では操作できません。

方法2: Dockerfile

Dockerfile は、Docker イメージを構築するために使用されるビルド ファイルとコマンド スクリプトです。
このスクリプトは画像を生成するために使用できます。画像はレイヤー化されており、スクリプトは 1 つずつコマンドになっており、各コマンドがレイヤーです。

# dockerfile ファイルを作成します。名前はランダムにできます。Dockerfile が推奨されます。
# コンテンツコマンド(大文字)ファイル内のパラメータ FROM centos
ボリューム ["volume01","volume02"]
CMD エコー "----終了----"
コマンド /bin/bash
# ここでの各コマンドは画像のレイヤーです

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

--volumes-from

# 使用方法 [root@sumarua]#docker run -it --name docker02 --volumes-from docker01 sumarua/centos

コンテナ間のデータ同期とデータ共有を実現

ここに画像の説明を挿入

データ ボリューム コンテナーからファイルを削除しても、このコンテナーにマウントされている他のコンテナーのデータ アクセスには影響しません。それはコピーの概念とバックアップコピーのメカニズムです。

ここに画像の説明を挿入

構成情報はコンテナ間で転送されます。データ ボリューム コンテナのライフ サイクルは、コンテナが使用されなくなるまで続きます。
ただし、ローカルに保存されると、ローカル データは削除されません。

要約する

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

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

<<:  MySQL ストアド プロシージャの作成と呼び出しの詳細な説明

>>:  uni-app WeChatアプレット認証ログイン実装手順

推薦する

SQL 結合クエリの内部結合、外部結合、クロス結合の違いの詳細な説明

データベースを使用するアプリケーションを開発する場合、必然的にユニオンクエリを使用する必要があります...

JS ES の新機能、変数分離割り当て

目次1. 配列の分離割り当て1.1 配列分離割り当てとは何ですか? 1.2 配列分離割り当てに失敗し...

CSS メニューボタンアニメーション

ドロップダウンメニューを書くには、ボタンをクリックします。メニューの入り口はアイコンボタンをクリック...

MySQL における ${param} と #{param} の違い

${param}によって渡されるパラメータは、テーブル名やフィールド名を渡すなど、SQL文の一部と...

React refの使用例

目次refとは何かrefの使い方DOM要素に配置するクラスコンポーネントに配置する関数コンポーネント...

MySQL の日付型の単一行関数コードの詳細な説明

MySQL の日付型単一行関数: CURDATE()またはCURRENT_DATE()は現在の日付を...

MySQL 5.7.18 アーカイブ圧縮版のインストールチュートリアル

この記事では、MySQL 5.7.18アーカイブ圧縮版をインストールする具体的な方法を参考までに紹介...

Vue 初心者ガイド: 環境の構築と開始方法

目次初期ビューVue開発環境の構築Vueインスタンスの作成Vue テンプレート構文Vue データバイ...

JavaScript が Xiaomi のカルーセル効果を模倣

この記事は、透明度を変えてカルーセルにするXiaomiカルーセルを真似て書いたものです。初心者なので...

HTMLドキュメントタイプの詳細な説明

私のは: <!DOCTYPE html>ブログガーデン: <!DOCTYPE HT...

システムエラー 1067 を解決するための MySQL データベース グリーン バージョンのインストール チュートリアル

ソフトウェアのグリーンバージョンとインストールバージョンの違いは何ですか?通常、ファイルのインストー...

入力が完了したことを検出し、次のコンテンツを自動的に入力する HTML を実装する方法

前回の記事では、入力完了の簡単な検出を実現しましたが、今回はさらに一歩進んで、入力が完了した後に次の...

Docker を使用した war パッケージ プロジェクトのデプロイの実装

Docker で war をデプロイするには、コンテナを使用する必要があります。ここでは tomca...

Linux でファイルを削除するときに「操作は許可されていません」というプロンプトが表示される場合の対処方法

同僚からよく聞かれるのですが、ファイル/ディレクトリを削除すると「操作は許可されていません」というエ...

Vue はチャット ボックスで絵文字を送信する機能を実装します

vueチャットボックスで絵文字を送信し、vueインターフェースで絵文字を送信するための具体的なコード...