Table des matières
1. Qu'est-ce qu'un volume de données Docker
2. Pourquoi utiliser des volumes de données ?
4.bind mount application
7.convoy卷插件
Maison Opération et maintenance Docker Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)

Jan 21, 2022 pm 06:15 PM
docker

Cet article vous apporte des connaissances pertinentes sur la gestion du volume de données et le plug-in de volume de convoi dans Docker. J'espère qu'il vous sera utile.

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)

1. Qu'est-ce qu'un volume de données Docker

  • Un volume de données est un répertoire spécialement désigné dans un ou plusieurs conteneurs qui peuvent contourner le système de fichiers commun.
    Les volumes sont conçus pour la persistance des données et sont indépendants du cycle de vie du conteneur.

  • Par conséquent, Docker ne supprimera pas automatiquement le volume de données lorsque le conteneur est supprimé, et il ne « collectera pas non plus activement les volumes qui ne sont plus utilisés par le conteneur.

  • L'existence du volume de données a pour but de rendre les données du conteneur persistantes et de permettre le partage de données entre conteneurs.

  • En termes simples, le volume de données du conteneur Docker peut être considéré comme une clé USB couramment utilisée dans nos vies. Il existe dans un ou plusieurs conteneurs et est monté sur le conteneur par Docker, mais il n'appartient pas au conteneur. Le système de fichiers commun Docker ne supprime pas ses volumes de données montés lorsqu'un conteneur est supprimé.

2. Pourquoi utiliser des volumes de données ?

Système de fichiers en couches Docker :

  • Faibles performances
  • Le cycle de vie est le même que celui du conteneur

Volume de données Docker :

  • monter sur l'hôte, en contournant superposition Le système de fichiers
  • a les mêmes performances que le disque hôte.Il sera toujours conservé après la suppression du conteneur
  • Uniquement le disque local et ne peut pas être migré avec le conteneur 3. Le volume de données Docker fournit deux types de volumes. . Montez des répertoires ou des fichiers dans des conteneurs

C'est intuitif, efficace et facile à comprendre.

Utilisez l'option -v pour spécifier le chemin, le format :

bind mount L'autorisation par défaut est en lecture et en écriture rw, vous pouvez spécifier ro en lecture seule lors du montage.

Le chemin spécifié par l'option -v, s'il n'existe pas, sera automatiquement créé lors du montage.
  • docker géré volume
  • bind mount doit spécifier le chemin du système de fichiers hôte, ce qui limite la portabilité.
  • Le volume géré par Docker n'a pas besoin de spécifier la source de montage
Comparaison du montage lié et du volume géré par Docker

Mêmes points : les deux sont un certain chemin dans le système de fichiers hôte

Différences :

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
Copier après la connexion

docker inspect vm1	#查看到ip为172.17.0.2
curl 172.17.0.2
Copier après la connexion

J'ai découvert qu'il s'agissait d'une page 403 : Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)

cd /opt/website/
ls	#发现没有默认发布页面
echo www.westos.org > index.html
curl 172.17.0.2
Copier après la connexion

Visitez nginx à ce moment-là, et il y aura du contenu sur www.westos.org :

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)

Vous pouvez également spécifier des autorisations lors du montage :

docker run -it --rm -v /opt/website:/data1 -v /etc/passwd:/data2/passwd:ro busybox
Copier après la connexion

Vous pouvez voir la valeur par défaut. Les autorisations sont rw lecture et écriture, nous pouvons donc modifier le contenu de index.html et après avoir spécifié passwd en lecture seule, nous ne pouvons pas modifier son contenu, nous ne pouvons que lire Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)


5 ; .docker géré le volumeIntroduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
Afficher le volume de gestion existant :

docker volume ls
Copier après la connexion

Parfois, nous avons des volumes de gestion résiduels après la suppression du conteneur. Nous devons le nettoyer, sinon il occupera nos ressources :

docker volume prune 
docker volume ls
Copier après la connexion
Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)

docker run -d --name registry registry
cd /var/lib/docker/volumes/
ls
docker history registry:latest
Copier après la connexion

Via docker. volume Vous pouvez copier le contenu du conteneur sur le point de montage :

docker run -d --name vm2 -v /usr/share/nginx/html nginx
cd /var/lib/docker/volumes/
ls
cd 674c999f99b7b524d8f5769b65cb5411d11e3fa855da695a5fdd3494e4342d89/
cd _data/
ls	#查看到默认发布目录被复制到了这里
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)

docker inspect vm2
curl 172.17.0.3	#nginx默认发布页
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)

echo hello docker! > index.html
curl 172.17.0.3	#可以直接在挂载的目录修改默认发布页
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)6. Introduction au plug-in de volume Docker

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)Le volume Docker utilise un pilote de type local par défaut et peut. n'existent que dans l'hôte hôte,

Les volumes multi-hôtes doivent utiliser des pilotes tiers

, vous pouvez consulter le lien : Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés) 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
Copier après la connexion

注意:rpcbind服务必须是开启的。这是因为:他是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务。
Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
server2:

yum install -y nfs-utils
systemctl start nfs-server.service
showmount -e server1	#寻找server1的挂载目录
mkdir /nfs
mount server1:/nfs /nfs
df
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
测试:
在server2中:

cd /nfs/
touch file
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
在server1中:

cd /nfs/
ls	#查看到file
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
说明两个节点的/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
Copier après la connexion

注意:第一次运行上面的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
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
在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
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
step3 创建卷:

docker volume ls
convoy create vol1
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
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默认发布页
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)

cd /nfs/
cd vol1/
echo hello convoy > index.html
curl 172.17.0.2
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
在server1中数据也同步了:

cd /nfs/
cd vol1/
cat index.html
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
在ser1中也可以运行容器,也可以用到共享的数据卷

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

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

删除卷:

convoy delete vol1
Copier après la connexion

实现本地驱动:

cd /etc/docker/plugins/
mv convoy.spec /mnt
systemctl restart docker
Copier après la connexion

创建卷:

docker volume create vol1
ls
cd volumes/
ls	#可以看到vol1,默认创建在这个目录下
cd vol1/
ls
cd _data/
ls	#进入该目录,是空的
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
使用卷:

docker run -d --name vm1 -v vol1:/usr/share/nginx/html nginx
docker ps
ls	#看到nginx默认发布目录被挂到这里了
Copier après la connexion

Introduction détaillée à la gestion du volume de données Docker et au plug-in de volume de convoi (exemples détaillés)
补充几条命令:

docker container prune	#删除停止的容器
docker volume prune	#删除没有被使用的卷
Copier après la connexion

推荐学习:《docker视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment changer la source d'image Docker en Chine Comment changer la source d'image Docker en Chine Apr 15, 2025 am 11:30 AM

Vous pouvez passer à la source de miroir domestique. Les étapes sont les suivantes: 1. Modifiez le fichier de configuration /etc/docker/daemon.json et ajoutez l'adresse source miroir; 2. Après enregistrer et sortir, redémarrez le service Docker Sudo Systemctl Docker pour améliorer la vitesse et la stabilité du téléchargement d'image.

Comment créer un miroir dans Docker Comment créer un miroir dans Docker Apr 15, 2025 am 11:27 AM

Étapes pour créer une image docker: écrivez un dockerfile qui contient les instructions de construction. Créez l'image dans le terminal, en utilisant la commande docker build. Marquez l'image et attribuez des noms et des balises à l'aide de la commande docker tag.

Comment lire la version docker Comment lire la version docker Apr 15, 2025 am 11:51 AM

Pour obtenir la version Docker, vous pouvez effectuer les étapes suivantes: exécutez la commande docker "docker --version" pour afficher les versions client et serveur. Pour Mac ou Windows, vous pouvez également afficher les informations de version via l'onglet Version de la GUI de bureau Docker ou du menu de bureau à propos de Docker.

Comment utiliser Docker Desktop Comment utiliser Docker Desktop Apr 15, 2025 am 11:45 AM

Comment utiliser Docker Desktop? Docker Desktop est un outil pour exécuter des conteneurs Docker sur les machines locales. Les étapes à utiliser incluent: 1. Installer Docker Desktop; 2. Démarrer Docker Desktop; 3. Créer une image Docker (à l'aide de DockerFile); 4. Build Docker Image (en utilisant Docker Build); 5. Exécuter Docker Container (à l'aide de Docker Run).

Comment mettre à jour l'image de Docker Comment mettre à jour l'image de Docker Apr 15, 2025 pm 12:03 PM

Les étapes pour mettre à jour une image Docker sont les suivantes: Tirez la dernière étiquette d'image Nouvelle image Supprimer l'ancienne image pour une balise spécifique (facultative) Redémarrez le conteneur (si nécessaire)

Comment afficher les journaux de Docker Comment afficher les journaux de Docker Apr 15, 2025 pm 12:24 PM

Les méthodes pour afficher les journaux Docker incluent: à l'aide de la commande docker logs, par exemple: docker logs contener_name Utilisez la commande docker exec pour exécuter / bin / sh et afficher le fichier journal, par exemple: docker exec -it contener_name / bin / sh; Cat /var/log/continer_name.log Utilisez la commande docker-compose JORS de Docker Compose, par exemple: docker-compose -f docker-com

Comment enregistrer l'image docker Comment enregistrer l'image docker Apr 15, 2025 am 11:54 AM

Pour enregistrer l'image dans Docker, vous pouvez utiliser la commande docker commit pour créer une nouvelle image, contenant l'état actuel du conteneur spécifié, Syntaxe: Docker Commit [Options] Nom d'image de l'ID de conteneur. Pour enregistrer l'image dans le référentiel, vous pouvez utiliser la commande docker push, Syntax: Docker Push Image Name [: Tag]. Pour importer des images enregistrées, vous pouvez utiliser la commande docker pull, syntaxe: docker pull name [: tag].

Comment vérifier le nom du conteneur Docker Comment vérifier le nom du conteneur Docker Apr 15, 2025 pm 12:21 PM

Vous pouvez interroger le nom du conteneur Docker en suivant les étapes: répertorier tous les conteneurs (Docker PS). Filtrez la liste des conteneurs (à l'aide de la commande grep). Obtient le nom du conteneur (situé dans la colonne "Noms").

See all articles