検索
ホームページ運用・保守DockerDocker データ ボリュームとは何ですか?

Docker では、データ ボリュームは 1 つ以上のコンテナで使用できるホスト上の特別なディレクトリです。コンテナ間で共有および再利用できます。ローカルとコンテナの間でデータを転送する方が効率的です。ボリュームへの変更はすぐに有効になり、データ ボリュームはコンテナ内とローカル ディレクトリの両方で変更できます。

Docker データ ボリュームとは何ですか?

このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。

Docker データ ボリュームとは何ですか?

データ ボリューム (データ ボリューム) は、ホスト内のディレクトリまたはファイルです。データ ボリューム データの永続性であり、コンテナのライフサイクルから完全に独立しているため、コンテナが削除されても、Docker はマウントされたデータ ボリュームを削除しません。コンテナ ディレクトリとデータ ボリューム ディレクトリをバインドすると、互いの変更はすぐに同期され、1 つのデータ ボリュームを複数のコンテナで同時にマウントしたり、1 つのコンテナに複数のデータ ボリュームをマウントしたりすることもできます。

データ ボリュームの機能

  • データ ボリュームはコンテナ間で共有および再利用でき、ローカルとコンテナ間のデータ転送がより効率的になります

  • データ ボリュームへの変更はすぐに有効になります。データ ボリュームはコンテナ内またはローカル ディレクトリで変更できます。

  • データ ボリュームの更新イメージには影響せず、データとアプリケーションを切り離します

  • コンテナが使用されなくなるまで、ボリュームは常に存在します

1. Docker データのマウント先コンテナ

Docker では、データの永続性 (Docker のいわゆるデータの永続性とは、コンテナの終わりでデータが終わらないことを意味します) を実現するために、データは次のことを行う必要があります。ホストからコンテナにマウントされます。現在、Docker は、ホストからコンテナーにデータをマウントする 3 つの異なる方法を提供しています。 (1) ボリューム: Docker は、/var/lib/docker/volumes にあるホスト ファイル システムの一部を管理します。ディレクトリ; (最も一般的に使用される方法)

上の図からわかるように、現在、すべてのコンテナ データはこのディレクトリに保存されています。作成時にボリュームが指定されていないため、Docker はデフォルトで多数の匿名 (上記の長い ID 名の集まりだけ) ボリュームを作成するのに役立ちます。

(2) バインド マウント: ホスト システムの任意の場所に保存できることを意味します; (

一般的に使用される方法

)

ただし、バインド マウントは別の場所にあります。ホスト システムは移植可能ではありません。たとえば、Windows と Linux のディレクトリ構造は異なり、バインド マウントが指すホスト ディレクトリを同じにすることはできません。これは、Dockerfile に移植性がないため、バインド マウントを Dockerfile に含めることができない理由でもあります。 (3) tmpfs: マウントはホスト システムのメモリに保存され、ホストのファイル システムには書き込まれません; (

一般的には使用されない方法

)

3 つの方法の概略図は次のとおりです:

2. Volume の基本的な使用方法

2.1 ボリュームの管理

# docker volume create edc-nginx-vol // 创建一个自定义容器卷
# docker volume ls // 查看所有容器卷
# docker volume inspect edc-nginx-vol // 查看指定容器卷详情信息
たとえば、ここでは「edc-nginx-vol」という名前のカスタム コンテナ ボリュームを作成します。

2.2 指定したボリュームを使用してコンテナを作成する

カスタム コンテナ ボリュームを使用すると、このデータ ボリュームを使用してコンテナを作成できます。例:

# docker run -d -it --name=edc-nginx -p 8800:80 -v edc-nginx-vol:/usr/share/nginx/
このうち -v はデータボリュームのマウントを表し、ここではカスタムデータボリューム edc-nginx-vol を使用し、/usr/share/nginx/ にデータボリュームをマウントします。 html (このディレクトリは、yum が nginx をインストールするためのデフォルトの Web ディレクトリです)。

-v が指定されていない場合、Docker はデフォルトでマッピングとマウント用の匿名データ ボリュームの作成を支援します。

コンテナを作成した後、コンテナに入って見てみましょう:

デフォルトのページが 2 つあることがわかります。新しい SSH を開始します。 ホストに接続し、作成したばかりのデータ ボリュームの内部を確認します。

   可以看到,我们可以访问到容器里面的两个默认页面,由此可知,volume帮我们做的类似于一个软链接的功能。在容器里边的改动,我们可以在宿主机里感知,而在宿主机里面的改动,在容器里边可以感知到。

  这时,如果我们手动stop并且remove当前nginx容器,我们会发现容器卷里面的文件还在,并没有被删除掉。

  

   由此可以验证,在数据卷里边的东西是可以持久化的。如果下次还需要创建一个nginx容器,那么还是复用当前数据卷里面的文件。

  此外,我们还可以启动多个nginx容器实例,并且共享同一个数据卷,复用性和扩展性较强。

2.3 清理卷

  如果不再使用自定义数据卷了,那么可以手动清理掉:

# docker stop edc-nginx // 暂停容器实例
# docker rm edc-nginx // 移除容器实例
# docker volume rm edc-nginx-vol // 删除自定义数据卷

三、Bind Mounts的基本使用

3.1 使用卷创建一个容器

docker run -d -it --name=edc-nginx -v /app/wwwroot:/usr/share/nginx/html nginx

  这里指定了将宿主机上的 /app/wwwroot 目录(如果没有会自动创建)挂载到 /usr/share/nginx/html (这个目录是yum安装nginx的默认网页目录)。

  这时我们再次进入容器内部看看:

  

   可以看到,与volumes不同,bind mounts的方式会隐藏掉被挂载目录里面的内容(如果非空的话),这里是/usr/share/nginx/html 目录下的内容被隐藏掉了,因此我们看不到。

  但是,我们可以将宿主机上的文件随时挂载到容器中:

  Step1.新建一个index.html

  

  Step2.在容器中查看

  

3.2 验证绑定

docker inspect edc-nginx

   通过上述命令可以看到一大波配置,我们要关注的是:

  

3.3 清理

docker stop edc-nginx
docker rm edc-nginx

  同volumes一样,当我们清理掉容器之后,挂载目录里面的文件仍然还在,不会随着容器的结束而消失,从而实现数据持久化。

3.4 应用案例

  在服务治理组件中,服务发现组件是一个最常用的组件之一,Consul是一个流行的服务发现开源项目,Consul推荐我们使用配置文件的方式注册服务信息。因此,我们常常会将填写好服务注册配置文件放在宿主机的一个文件目录下将其挂载到Consul的容器指定目录下,如下所示:

docker run -d -p : --restart=always \
-v /XiLife/consul/data/server1:/consul/data -v /XiLife/consul/conf/server1:/consul/config \
-e CONSUL_BIND_INTERFACE= --privileged= \
--name=consul_server_1 consul:. agent -server -bootstrap-expect= -ui -node=consul_server_1 -client= \
-data- /consul/data -config- /consul/config -datacenter=xdp_dc;

  可以看到,我们通过Bind Mounts的方式将宿主机上的/XiLife/consul/data/server1目录挂载到了容器的/consul/data目录下,还将/XiLife/consul/conf/server1目录挂载到了容器的/consul/config目录下,而容器下的两个目录/consul/data和/consul/config则是我们指定的存放agent数据和配置文件的地方。因此,宿主机上的配置文件的变化会及时反映到容器中,比如我们在宿主机上的目录下更新了配置文件,那么只需要reload一下Consul的容器实例即可:

docker exec consul-server consul reload

  *.这里的consul-server是容器的名字,consul reload是重新加载的命令(非restart)。

推荐学习:《docker视频教程

以上がDocker データ ボリュームとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Docker vs.仮想マシン:比較Docker vs.仮想マシン:比較May 09, 2025 am 12:19 AM

Dockerおよび仮想マシンには独自の利点と欠点があり、選択は特定のニーズに基づいている必要があります。 1.ドッカーは軽量で高速で、マイクロサービスとCI/CD、高速スタートアップ、低リソースの利用に適しています。 2.仮想マシンは、高い隔離と多型のシステムサポートを提供しますが、多くのリソースと遅い起動を消費します。

Dockerのアーキテクチャ:コンテナと画像の理解Dockerのアーキテクチャ:コンテナと画像の理解May 08, 2025 am 12:17 AM

Dockerアーキテクチャのコアコンセプトはコンテナとミラーです。1。ミラーは、アプリケーションとその依存関係を含むコンテナの青写真です。 2。コンテナは画像のインスタンスを実行しており、画像に基づいて作成されます。 3.ミラーは複数の読み取り専用レイヤーで構成され、コンテナが実行されているときに書き込み可能なレイヤーが追加されます。 4. Linuxネームスペースとコントロールグループを介してリソースの分離と管理を実装します。

Dockerの力:コンテナ化が説明しましたDockerの力:コンテナ化が説明しましたMay 07, 2025 am 12:07 AM

Dockerは、コンテナ化テクノロジーを介したアプリケーションの建設、展開、および運用を簡素化します。 1)Dockerは、コンテナテクノロジーを使用してアプリケーションとその依存関係をパッケージ化するオープンソースプラットフォームです。 2)ミラーと容器はDockerの中核です。ミラーはアプリケーションの実行可能パッケージであり、コンテナは画像の実行インスタンスです。 3)Dockerの基本的な使用法は、NGINXサーバーを実行するようなものであり、高度な使用法は、DockerComposeを使用してマルチコンテナーアプリケーションを管理するようなものです。 4)一般的なエラーには、画像のダウンロード障害とコンテナの起動の失敗が含まれ、デバッグスキルにはログの表示とポートのチェックが含まれます。 5)パフォーマンスの最適化とベストプラクティスには、ミラーの最適化、リソース管理、セキュリティの改善が含まれます。

KubernetesとDocker:コンテナ化されたアプリの展開と管理KubernetesとDocker:コンテナ化されたアプリの展開と管理May 06, 2025 am 12:13 AM

KubernetesとDockerを使用してコンテナ化されたアプリケーションを展開する手順には次のものがあります。1。Docker画像を作成し、DockerFileを使用してアプリケーション画像を定義し、DockerHubにプッシュします。 2. Kubernetesで展開とサービスを作成して、アプリケーションを管理および公開します。 3. horizo​​ntalpodautoscalerを使用して、動的なスケーリングを実現します。 4. Kubectlコマンドを介して一般的な問題をデバッグします。 5.パフォーマンスを最適化し、リソースの制限とリクエストを定義し、ヘルムを使用して構成を管理します。

Docker:コンテナ化技術の紹介Docker:コンテナ化技術の紹介May 05, 2025 am 12:11 AM

Dockerは、アプリケーションを開発、パッケージ化、および実行するためのオープンソースプラットフォームであり、コンテナ化テクノロジーを通じて、さまざまな環境でのアプリケーションの一貫性を解決します。 1.画像の作成:DockerFileを介してアプリケーション環境と依存関係を定義し、DockerBuildコマンドを使用してビルドします。 2。コンテナの実行:Dockerrunコマンドを使用して、鏡からコンテナを起動します。 3.コンテナの管理:Dockerps、Dockerstop、Dockerrm、その他のコマンドを介してコンテナライフサイクルを管理します。

DockerおよびLinux:ポータブルアプリケーションの構築DockerおよびLinux:ポータブルアプリケーションの構築May 03, 2025 am 12:17 AM

DockerとLinuxを使用してポータブルアプリケーションを構築する方法は?まず、DockerFileを使用してアプリケーションをコンテナ化し、Linux環境でコンテナを管理および展開します。 1)dockerfileを書き、アプリケーションとその依存関係をミラーにパッケージ化します。 2)dockerbuildおよびdockerrunコマンドを使用して、Linux上のコンテナを構築および実行します。 3)DockerComposeを介してマルチコンテナーアプリケーションを管理し、サービス依存関係を定義します。 4)画像のサイズとリソースの構成を最適化し、セキュリティを強化し、アプリケーションのパフォーマンスと移植性を向上させます。

DockerとKubernetes:コンテナオーケストレーションの力DockerとKubernetes:コンテナオーケストレーションの力May 02, 2025 am 12:06 AM

DockerとKubernetesは、コンテナオーケストレーションを通じてアプリケーションの展開と管理効率を改善します。 1.DockerはDockerFileを介して画像を構築し、コンテナを実行してアプリケーションの一貫性を確保します。 2。Kubernetesは、自動展開と拡張を実現するために、ポッド、展開、およびサービスを介してコンテナを管理します。

Docker vs. Kubernetes:重要な違​​いと相乗効果Docker vs. Kubernetes:重要な違​​いと相乗効果May 01, 2025 am 12:09 AM

DockerとKubernetesは、コンテナ化とオーケストレーションのリーダーです。 Dockerはコンテナライフサイクル管理に焦点を当てており、小規模プロジェクトに適しています。 Kubernetesはコンテナオーケストレーションが上手で、大規模な生産環境に適しています。 2つの組み合わせは、開発と展開の効率を改善できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境