Maison  >  Article  >  Opération et maintenance  >  Le tutoriel le plus détaillé sur l'organisation des volumes de données Docker

Le tutoriel le plus détaillé sur l'organisation des volumes de données Docker

WBOY
WBOYavant
2022-02-23 17:32:252079parcourir

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.

Le tutoriel le plus détaillé sur l'organisation des volumes de données Docker

Étude recommandée : "Tutoriel vidéo Docker"

Qu'est-ce qu'un volume de données ?

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é.

Caractéristiques des volumes de données

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

Données de gestion dans le conteneur

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

Commande docker commune cp

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 Docker

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 参数所挂载数据卷的容器 自己并不需要保持在运行状态。

Le tutoriel le plus détaillé sur lorganisation des volumes de données Docker

基本使用

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer