目次
1. Docker データ ボリュームとは
2. データ ボリュームを使用する理由
3. Docker データ ボリュームは 2 つのボリュームを提供します
バインド マウント
docker 管理ボリューム
バインド マウントと Docker 管理ボリュームの比較
4.bind mount application
7.convoy卷插件
ホームページ 運用・保守 Docker Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

Jan 21, 2022 pm 06:15 PM
docker

この記事では、Docker のデータ ボリューム管理とコンボイ ボリューム プラグインに関する関連知識を提供します。お役に立てば幸いです。

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

1. Docker データ ボリュームとは

  • データ ボリュームは、1 つ以上のコンテナー内の特別に指定されたディレクトリです。ユニオンファイルシステムをバイパスできます。
    ボリュームはデータの永続性を考慮して設計されており、コンテナーのライフサイクルには依存しません。

  • したがって、Docker は、コンテナーが削除されたときにデータ ボリュームを自動的に削除したり、コンテナーによって使用されなくなったボリュームを積極的に「ガベージ コレクト」したりしません。

  • データボリュームの存在は、コンテナのデータを永続化し、コンテナ間でのデータ共有を実現するためです。

  • Docker コンテナのデータ ボリュームは、平たく言えば、私たちの生活でよく使われる USB ディスクとみなすことができ、1 つ以上のコンテナ内に存在し、docker によってコンテナにマウントされます。 、ただし、ユニオン ファイル システムに属していないため、コンテナーが削除されても、Docker はマウントされたデータ ボリュームを削除しません。

2. データ ボリュームを使用する理由

docker 階層化ファイル システム:

  • パフォーマンスの低下
  • ライフ サイクルと同じコンテナ

docker データ ボリューム:

  • 階層ファイル システムをバイパスしてホストにマウントします
  • パフォーマンスはホスト ディスクと同じです。コンテナは削除されます 後も保持されます
  • ローカル ディスクのみ、コンテナと一緒に移行できません

3. Docker データ ボリュームは 2 つのボリュームを提供します

バインド マウント

は、ホスト上のディレクトリまたはファイルをコンテナにマウントします。

  • は直感的で効率的で理解しやすいです。
  • -v オプションを使用してパスを指定します。形式:
  • bind mount デフォルトの権限は読み取りおよび書き込み rw ですが、マウント時に読み取り専用の ro を指定できます。
  • -v オプションで指定したパスが存在しない場合は、マウント時に自動的に作成されます。

docker 管理ボリューム

バインド マウントではホスト ファイル システム パスを指定する必要があるため、移植性が制限されます。
Docker 管理ボリュームはマウント ソースを指定する必要はありません

バインド マウントと Docker 管理ボリュームの比較

同じ点: どちらもホスト ファイル システム内のパスです

相違点:
Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

4.bind mount application

docker network prune 
docker network ls
docker run -d --name vm1 -v /opt/website:/usr/share/nginx/html nginx
docker ps
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

docker inspect vm1	#查看到ip为172.17.0.2
curl 172.17.0.2
ログイン後にコピー

403 ページが見つかりました:
Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

cd /opt/website/
ls	#发现没有默认发布页面
echo www.westos.org > index.html
curl 172.17.0.2
ログイン後にコピー

この時点で nginx にアクセスすると、www.westos.org のコンテンツが表示されます:
Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
マウント時に権限を指定することもできます:

docker run -it --rm -v /opt/website:/data1 -v /etc/passwd:/data2/passwd:ro busybox
ログイン後にコピー

これを表示できます。デフォルトの権限は rw 読み取りおよび書き込みであるため、index.html のコンテンツを変更できます。passwd を読み取り専用として指定した後は、そのコンテンツを変更することはできず、読み取りのみが可能です。
Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

##5. docker 管理ボリューム

既存の管理ボリュームを確認します:

docker volume ls
ログイン後にコピー
コンテナを削除した後に管理ボリュームが残っている場合があります。この場合は、それをクリーンアップする必要があります。それ以外の場合は、リソースを占有します:

docker volume prune 
docker volume ls
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

docker run -d --name registry registry
cd /var/lib/docker/volumes/
ls
docker history registry:latest
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例) Docker ボリュームを介してコンテナの内容をマウント ポイントにコピーできます:

docker run -d --name vm2 -v /usr/share/nginx/html nginx
cd /var/lib/docker/volumes/
ls
cd 674c999f99b7b524d8f5769b65cb5411d11e3fa855da695a5fdd3494e4342d89/
cd _data/
ls	#查看到默认发布目录被复制到了这里
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

docker inspect vm2
curl 172.17.0.3	#nginx默认发布页
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

echo hello docker! > index.html
curl 172.17.0.3	#可以直接在挂载的目录修改默认发布页
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)#6.Docker ボリューム プラグインの紹介

docker ボリュームはデフォルトで使用されます これはローカル タイプのドライバーであり、ホスト マシン上にのみ存在できます

クロスホスト ボリュームにはサードパーティ ドライバーの使用が必要です リンクを表示できます:
https ://docs.docker.com/engine/extend /legacy_plugins/#volume-plugins


Docker Plugin 是以Web Service的服务运行在每一台Docker Host上的,通过HTTP协议传输RPC风格的JSON数据完成通信。Plugin的启动和停止,并不归Docker管理,Docker Daemon依靠在缺省路径下查找Unix Socket文件,自动发现可用的插件。
当客户端与Daemon交互,使用插件创建数据卷时,Daemon会在后端找到插件对应的 socket 文件,建立连接并发起相应的API请求,最终结合Daemon自身的处理完成客户端的请求。

7.convoy卷插件

convoy卷插件支持三种运行方式:devicemapper、NFS、EBS。下面的实验以nfs的运行方式来演示

实验目的:在server1和2底层用nfs来实现数据共享

step1 首先在server1和server2上搭建nfs文件系统:

server1:

yum install -y nfs-utils
systemctl start rpcbind	
mkdir /nfs	#创建共享目录
chmod 777 /nfs	#修改共享目录权限
vim /etc/exports	#编辑共享目录文件,否则将不会被共享出去
/nfs	*(rw,no_root_squash)
systemctl start nfs
ログイン後にコピー

注意:rpcbind服务必须是开启的。这是因为:他是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务。
Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
server2:

yum install -y nfs-utils
systemctl start nfs-server.service
showmount -e server1	#寻找server1的挂载目录
mkdir /nfs
mount server1:/nfs /nfs
df
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
测试:
在server2中:

cd /nfs/
touch file
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
在server1中:

cd /nfs/
ls	#查看到file
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
说明两个节点的/nfs实现同步了

step2 配置convoy环境:
docker官方只提供了卷插件的api,开发者可以根据实际需求定制卷插件驱动。

在server1中:

tar zxf convoy.tar.gz 
cd convoy/
cp convoy* /usr/local/bin/  #将二进制文件加入到PATH路径
mkdir /etc/docker/plugins	#创建docker的插件目录
convoy daemon --drivers vfs --driver-opts vfs.path=/nfs &> /dev/null &
cd /nfs
ls
ログイン後にコピー

注意:第一次运行上面的convoy daemon命令的时候,会在/nfs目录下生成一个config文件夹,这个文件夹不要删除,不然客户端的convoy命令就会用不了

echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
#将convoy守护进程开启生成的.sock文件放入/etc/docker/plugins目录下的convoy.spec文件中,docker就可以识别。(其中convoy.spec文件之前是不存在的)
cat /etc/docker/plugins/convoy.spec
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
在server2中同样配置convoy环境:

scp -r server1:convoy .
cd convoy/
cp convoy* /usr/local/bin/  #将二进制文件加入到PATH路径
mkdir /etc/docker/plugins	#创建docker的插件目录
echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
convoy daemon --drivers vfs --driver-opts vfs.path=/nfs &> /dev/null &
cd /nfs
ls
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
step3 创建卷:

docker volume ls
convoy create vol1
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
step4 操作卷:

在server2中运行容器,指定卷为刚才新创建的vol1:

docker run -it --name vm1 -v vol1:/usr/share/nginx/html nginx
docker ps
docker inspect vm1
curl 172.17.0.2	#nginx默认发布页
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)

cd /nfs/
cd vol1/
echo hello convoy > index.html
curl 172.17.0.2
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
在server1中数据也同步了:

cd /nfs/
cd vol1/
cat index.html
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
在ser1中也可以运行容器,也可以用到共享的数据卷

说明:docker引擎默认扫描 /etc/docker/plugins目录中的convoy.spec—>访问/run/convoy/convoy.sock文件—>发起响应的api请求—>把数据写入vol1中—>底层通过nfs进行主机间的数据同步

如何删除通过nfs创建的数据卷,让之后创建的数据卷都是本地的呢?

删除卷:

convoy delete vol1
ログイン後にコピー

实现本地驱动:

cd /etc/docker/plugins/
mv convoy.spec /mnt
systemctl restart docker
ログイン後にコピー

创建卷:

docker volume create vol1
ls
cd volumes/
ls	#可以看到vol1,默认创建在这个目录下
cd vol1/
ls
cd _data/
ls	#进入该目录,是空的
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
使用卷:

docker run -d --name vm1 -v vol1:/usr/share/nginx/html nginx
docker ps
ls	#看到nginx默认发布目录被挂到这里了
ログイン後にコピー

Docker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)
补充几条命令:

docker container prune	#删除停止的容器
docker volume prune	#删除没有被使用的卷
ログイン後にコピー

推荐学习:《docker视频教程

以上がDocker データ ボリューム管理と Convoy ボリューム プラグインの詳細な紹介 (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

中国のDocker画像ソースを変更する方法 中国のDocker画像ソースを変更する方法 Apr 15, 2025 am 11:30 AM

国内のミラーソースに切り替えることができます。手順は次のとおりです。1。構成ファイル/etc/docker/daemon.jsonを編集し、ミラーソースアドレスを追加します。 2。保存して終了した後、Docker Service Sudo SystemCtlを再起動してDockerを再起動して、画像のダウンロード速度と安定性を改善します。

Dockerでミラーを作成する方法 Dockerでミラーを作成する方法 Apr 15, 2025 am 11:27 AM

Docker画像を作成する手順:ビルド命令を含むDockerFileを書きます。 Docker Buildコマンドを使用して、ターミナルで画像を作成します。画像にタグを付け、Dockerタグコマンドを使用して名前とタグを割り当てます。

Dockerバージョンを読む方法 Dockerバージョンを読む方法 Apr 15, 2025 am 11:51 AM

Dockerバージョンを取得するには、次の手順を実行できます。Dockerコマンド「Docker -version」を実行して、クライアントバージョンとサーバーバージョンを表示します。 MacまたはWindowsの場合は、DockerデスクトップGUIのバージョンタブまたはDockerデスクトップメニューのバージョン情報を表示することもできます。

Dockerデスクトップの使用方法 Dockerデスクトップの使用方法 Apr 15, 2025 am 11:45 AM

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

Dockerの画像を更新する方法 Dockerの画像を更新する方法 Apr 15, 2025 pm 12:03 PM

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)

Dockerからログを表示する方法 Dockerからログを表示する方法 Apr 15, 2025 pm 12:24 PM

Dockerログを表示する方法は次のとおりです。たとえば、Docker Logsコマンドを使用します。たとえば、Docker logs container_name docker execコマンドを使用して /bin /shを実行し、logファイルを表示します。 cat /var/log/container_name.log docker-compose -f docker-comのDocker ComposeのDocker-Composeログを使用します。

Docker画像を保存する方法 Docker画像を保存する方法 Apr 15, 2025 am 11:54 AM

Dockerに画像を保存するには、Docker Commitコマンドを使用して、指定されたコンテナの現在の状態、Syntax:Docker Commit [Options]コンテナID画像名を含む新しい画像を作成できます。画像をリポジトリに保存するには、Docker Pushコマンド、Syntax:Docker Push Image Name [:Tag]を使用できます。保存された画像をインポートするには、Docker Pullコマンド、Syntax:Docker Pull Image Name [:Tag]を使用できます。

Dockerコンテナの名前を確認する方法 Dockerコンテナの名前を確認する方法 Apr 15, 2025 pm 12:21 PM

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

See all articles