Maison > Article > Opération et maintenance > Le tutoriel le plus détaillé sur l'organisation des volumes de données Docker
Cet article vous apporte des connaissances pertinentes sur les volumes de données dans docker. Les volumes de données peuvent partager ou réutiliser des données entre conteneurs. Les modifications des volumes de données ne seront pas incluses dans la mise à jour de l'image. aide.
Étude recommandée : "Tutoriel vidéo Docker"
Lors de l'utilisation d'un conteneur Docker, une série de fichiers de données seront générés lorsque le conteneur Docker. est supprimé, mais une partie du contenu généré devrait être enregistrée pour une autre utilisation. Docker regroupe l'application et l'environnement d'exécution dans des conteneurs pour la publication. Les programmeurs espèrent que certaines des données générées pendant le processus en cours pourront être conservées. pour pouvoir partager des données entre conteneurs.
D'une manière générale, le volume de données du conteneur Docker peut être considéré comme un disque USB couramment utilisé. Il existe dans un ou plusieurs conteneurs et est monté sur le conteneur par Docker. Cependant, il n'appartient pas au système de fichiers commun et Docker le fera. ne le supprimez pas dans le conteneur. Supprimez son volume de données monté.
Les volumes de données peuvent partager ou réutiliser des données entre conteneurs
Les modifications du volume de données peuvent prendre effet immédiatement
Les modifications du volume de données ne seront pas incluses dans la mise à jour du miroir
Par défaut, le volume de données existera toujours, même si le conteneur est supprimé
Le cycle de vie du volume de données continue jusqu'à ce qu'aucun conteneur ne l'utilise
Volumes de données : volumes de données Les données du conteneur sont directement mappées à l'environnement hôte local
Conteneur de volume de données : Conteneurs de volume de données Utilisez des conteneurs spécifiques pour maintenir les volumes de données
Syntaxe
Copier les fichiers hôte dans le conteneur
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
Copier les fichiers du conteneur vers l'hôte
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
Paramètres communs
-L : Conserver les liens source dans la cible
Utilisation de base
Copier les fichiers de l'hôte dans le conteneur
docker cp /data/index.html nginx:/usr/share/nginx/html/index.html
Copier les fichiers du conteneur vers l'hôte
docker cp nginx:/etc/nginx/nginx.conf /data
Volumes de données (Data Volumes) sont disponibles pour un ou plusieurs conteneurs. Répertoire spécial utilisé qui mappe le répertoire du système d'exploitation hôte directement dans le conteneur.
Remarques sur les volumes de données
Pour monter un volume de données, il est préférable de créer un conteneur de démarrage via run au lieu de create/start. Une fois que la commande create/start a créé un conteneur de démarrage, il est assez difficile de monter le conteneur. volume de données. De nombreuses configurations doivent être modifiées, mais ce n'est pas impossible.
Le site officiel de Docker recommande de monter autant que possible des répertoires au lieu de monter des fichiers
Type de volume de données
Volume de données de l'hôte : directement dans le système de fichiers de l'hôte mais accessible par le conteneur (montage de liaison)
nommé Data volume : Un volume de données géré par Docker sur le disque, mais ce volume a un nom.
Volume de données anonyme : Un volume de données géré par Docker sur le disque Il n'est pas facile à trouver car il n'y a pas de nom pour gérer ces fichiers.
Volume de données hôte
montages de liaison : les données du conteneur sont stockées n'importe où dans le système de fichiers hôte, même dans certains répertoires ou fichiers système importants. Des processus autres que Docker peuvent également les modifier arbitrairement.
Lors de l'utilisation de montages de liaison, le répertoire ou le fichier hôte est monté dans le conteneur. Le conteneur utilisera ou modifiera les données de l'hôte en fonction du chemin absolu du répertoire ou du fichier de montage. Les répertoires ou fichiers de l'hôte n'ont pas besoin d'exister à l'avance et seront automatiquement créés en cas de besoin.
L'utilisation des montages de liaison est très bonne en termes de performances, mais cela dépend de la machine hôte disposant d'un système de fichiers bien structuré.
Les conteneurs utilisant des montages de liaison peuvent modifier le système de fichiers hôte via le processus à l'intérieur du conteneur, y compris la création, la modification et la suppression de fichiers et de répertoires système importants. Bien que cette fonction soit très puissante, elle aura évidemment également des implications en matière de sécurité. que Docker sur l'hôte
Notes
Si vous montez un volume de données vide sur un répertoire non vide du conteneur, les fichiers de ce répertoire seront copiés sur le volume de données
Si vous montez un volume de données non vide sur un répertoire dans le conteneur, et le répertoire dans le conteneur affichera les données dans le volume de données. S'il y a des données dans le répertoire d'origine du conteneur, les données d'origine seront masquées
Utilisation de base
Syntaxe
docker run -v /宿主机绝对路径目录:/容器内目录 镜像名
Utilisation de base
docker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin -v /data/mysql:/var/lib/mysql mysql:5.7.31 --character-set-server=utf8 --collation-server=utf8_general_ci
Autorisations du répertoire du conteneur
Pass -v Chemin dans le conteneur : ro rw Change read et autorisations d'écriture ro :readonly Lecture seule
rw:readwrite Lisible et inscriptible
docker run -it -v /Répertoire du chemin absolu de l'hôte :/Répertoire du conteneur :ro nom de l'image
docker run -it -v /Répertoire du chemin absolu de l'hôte :/Répertoire dans le conteneur : rw Nom de l'image
Par exemple :
docker run -d -P --name nginx05 -v nginx1:/etc/nginx:ro nginx docker run -d -P --name nginx05 -v nginx2:/etc/nginx:rw nginx
ro Tant que vous voyez ro, cela signifie que ce chemin ne peut être exploité que via l'hôte et ne peut pas être exploité à l'intérieur du conteneur !
Volume de données nommé
Basic Utilisez
docker run -itd --name nginx -p 80:80 -v lagouedu-nginx:/etc/nginx nginx:1.19.3-
alpine
pour afficher le volume de données docker docker volume ls
Afficher le répertoire hôte lagouedu-nginx
docker volume inspect lagouedu-nginx
Entrez le répertoire par défaut du volume de données docker
cd /var/lib/docker/volumes/lagouedu-nginx
Afficher les fichiers
ls
Tous les fichiers sont enregistrés dans Docker par défaut_ cd _data dans le répertoire de données
supprimez le conteneur
docker rm $(docker stop $(docker ps -aq))
查看挂载数据是否还存在,通过查看数据,发现删除容器后,宿主机中的数据还存在
ls
匿名数据卷
基本使用
docker run -itd --name nginx -p 80:80 -v /etc/nginx nginx:1.19.3-alpine 查看docker数据卷 docker volume ls
查看宿主机目录
docker volume inspect dbd07daa4e40148b11....
进入docker数据卷默认目录
cd /var/lib/docker/volumes/dbd07daa4e40148b11....
查看文件
ls
所有的文件docker默认保存在_data目录中 cd _data
删除容器
docker rm $(docker stop $(docker ps -aq))
查看挂载数据是否还存在,通过查看数据,发现删除容器后,宿主机中的数据还存在
ls
run命令
常用参数
--volumes-from
如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器
也是一个容器,但是它的目的是专门用来提供数据卷供其他容器挂载。
发现创建好的数据卷容器是处于停止运行的状态,因为使用 —volumes-from 参数所挂载数据卷的容器 自己并不需要保持在运行状态。
基本使用
docker run -d --name data-volume -v /data/nginx:/usr/share/nginx/html -v /data/mysql:/var/lib/mysql centos:7.8.2003 docker run -itd --name nginx01 -p 80:80 --volumes-from data-volume nginx:1.19.3- alpine echo "nginx" > /data/nginx/index.html http://192.168.198.100 docker run -itd --name nginx02 -p 81:80 --volumes-from data-volume nginx:1.19.3- alpine http://192.168.198.100:81 docker run -itd --name mysql01 --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin --volumes-from data-volume mysql:5.7.31 -- character-set-server=utf8 --collation-server=utf8_general_ci docker run -itd --name mysql02 --restart always --privileged=true -p 3307:3306 -e MYSQL_ROOT_PASSWORD=admin --volumes-from data-volume mysql:5.7.31 -- character-set-server=utf8 --collation-server=utf8_general_ci
推荐学习:《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!