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アプレット認証ログイン実装手順

推薦する

Dockerコンテナアプリケーションログの表示方法

docker アタッチコマンドdocker attach [options] 容器実行中のコンテナに...

カルーセル効果を実現するためのネイティブJavaScript+CSS

この記事では、参考までに、カルーセル効果の具体的なコードをJavaScript+CSSを使用して実装...

Webデザインチュートリアル(6):デザインへの情熱を持ち続ける

<br />前の記事:Webデザインチュートリアル(5):Webビジュアルデザイン。 1...

Firefox の CSS を使用してデータを盗む

0x00 はじめに数か月前、Firefox に脆弱性 (CVE-2019-17016) があること...

Ubuntuはカーネルモジュールをコンパイルし、その内容はシステムログに反映されます。

目次1.Linuxログインインターフェース2. コードを書く3. Makefileを書く4. コンパ...

DD DT DLタグの使用例

通常は <ul><li> タグを使用しますが、dd タグと dt タグも便利...

Tencent Cloud で HTTPS を無料で導入する方法

最近、WeChatアプレットを書いていたとき、WeChatアプレットではすべてのリクエストインターフ...

Nginx を使用して https ルートドメイン名への 301 リダイレクトを実装するためのサンプル コード

SEO とセキュリティを考慮して、301 リダイレクトが必要です。以下の一般的な処理には Nginx...

Linux で Nginx ロード バランシングを使用して複数の Tomcat を構成する方法

Linux に nginx と複数の tomcat をインストールする方法はここでは紹介しません。不...

シンプルなナビゲーションバー機能を実現するHTML+CSS

さっそく、コードを見てみましょう(初心者:特に言うことはありません) <!DOCTYPE ht...

MySQL で絵文字表現を挿入できない理由と解決策

失敗のシナリオMySQL データベースに絵文字表現を挿入するために JDBC を呼び出すと、例外ja...

データベース接続のURLの詳細な説明と概要

データベース接続のURLの詳細な説明と概要JDBC URL = プロトコル名 + サブプロトコル名 ...

JavaScript を使用してハイパーリンクのリダイレクトを防ぐ方法 (複数の書き方)

JavaScript を使用すると、ハイパーリンクがジャンプするのを防ぐことができます。方法は次の...

vue3.0 でカルーセル コンポーネントをカプセル化する手順

目次1: カプセル化の考え方2. 包装工程3: ドットインジケーター4: 左と右のインジケーター5:...