Les données dynamiques gérées par le conteneur peuvent être placées dans la couche de lecture / écriture du conteneur en cours d'exécution, mais elles présentent certains inconvénients. Par exemple, lorsqu'un conteneur est supprimé, les données du conteneur disparaissent également. Il ne peut pas être partagé entre les conteneurs. Les performances d'écriture sont également médiocres par rapport à l'écriture sur des données sur l'hôte.
Créé sous / var / lib / docker / volumes. Il sera automatiquement monté sur le conteneur. Le volume créé peut être nommé et géré, et peut être monté sur plusieurs conteneurs. De plus, les fichiers communs peuvent être lus et écrits par plusieurs conteneurs. le volume ne disparaît pas lorsque le conteneur est supprimé et ne disparaît pas tant qu'il n'a pas été explicitement supprimé. Étant donné que le déplacement de fichiers n'est pas recommandé, il s'agit d'une fonctionnalité fournie pour gérer les fichiers sur le conteneur.
-#Docker pour éviter les différences environnementales-Démarrez une machine virtuelle avec la commande machine et travaillez dessus.
% docker-machine create vol-test
-#Connexion SSH à l'hôte créé
% docker-machine ssh vol-test
-#volume docker créer un nouveau nom de volume
$ docker volume create my-vol
-#Vérifier le volume existant
$ docker volume ls
-#Dans la zone de la machine hôte gérée par Docker, "mon-Un volume appelé "vol" est créé.
DRIVER VOLUME NAME
local my-vol
-#volume docker inspecter le nom du volume
$ docker valume inspect my-vol
-#volume du docker nom du volume rm
$ docker valume rm my-vol
-# docker run -itd --nom Nom du conteneur-v nom du volume:Source du conteneur de point de montage
$ docker run -itd —-name mount-c1 -v vol1:/app nginx:latest
Dans l'argument de -v, spécifiez le nom du volume séparé par deux-points et le chemin à monter sur le conteneur. Cette fois, le nom du volume est ** "vol1" **, et comme il n'existe pas, il sera créé en tant que nouveau volume. Le point de montage dans le conteneur sera ** "/ app" **. Vous pouvez voir que "vol1" est créé par la commande docker volume ls. Vous pouvez vérifier le volume monté en vérifiant les détails du conteneur avec la commande docker inspect.
$ docker exec -it mount-c1 /bin/bash
# df
Filesystem 1K-blocks Used Available Use% Mounted on
overlay 18714000 189496 17535376 2% /
tmpfs 65536 0 65536 0% /dev
tmpfs 504516 0 504516 0% /sys/fs/cgroup
shm 65536 0 65536 0% /dev/shm
/dev/sda1 18714000 189496 17535376 2% /app
tmpfs 504516 0 504516 0% /proc/asound
tmpfs 504516 0 504516 0% /proc/acpi
tmpfs 504516 0 504516 0% /proc/scsi
tmpfs 504516 0 504516 0% /sys/firmware
Vous pouvez voir que "/ app" est monté.
-#Aller à l'App
# cd app
-#Création d'un fichier "hogehoge"
# touch hogehoge
# ls
hogehoge
-# docker run -itd --nom Nom du conteneur--mount source=nom du volume,target=Source du conteneur de point de montage
$ docker run -itd —-name mount-c2 —-mount source=vol1,target=/app nginx:latest
Lors du montage avec --mount, spécifiez le volume de la source de montage dans l'argument de la source et la destination de montage dans l'argument de la cible. L'opération est la même que -v.
$ docker exec -it mount-c2 /bin/bash
# ls -l /app
Vous pouvez voir le fichier Hogehoge. En montant le même volume sur plusieurs conteneurs de cette manière, les fichiers peuvent être partagés. Cependant, cette méthode ne peut partager que des conteneurs s'exécutant sur le même hôte, pas entre différents hôtes.
-# docker run -itd --nom Nom du conteneur--mount source=nom du volume,destination=Source du conteneur de point de montage
$ docker run -itd —-name mount-c3 —-mount source=copy-vol,destination=/etc/nginx nginx
Un volume appelé "copy-vol" a été créé et monté dans "/ etc / nginx". Le fichier de configuration et le répertoire de "etc / nginx" sont copiés en volume.
$ docker volume inspect copy-vol
Vous pouvez voir le point de montage en regardant les détails de Volume. Lorsqu'un nouveau volume est créé et monté, les fichiers qui existaient déjà sont copiés et existent maintenant sur le volume. Un autre modèle de montage consiste à monter un volume qui existe déjà. Les fichiers du conteneur ne sont jamais copiés. Jusqu'au dernier, le volume existant est monté au point de montage spécifié et les fichiers existants qui existaient sur le conteneur sont masqués par le volume de montage et deviennent invisibles.
Vous pouvez définir s'il faut le rendre en lecture / écriture ou en lecture seule pour chaque conteneur. Comment monter en lecture seule à l'aide de l'indicateur de montage.
-# docker run -itd --nom Nom du conteneur--mount source=nom du volume,destination=Point de montage,source de conteneur en lecture seule
$ docker run -itd —-name mount-c4 -—mount source=copy-vol,destination=/etc/nginx,readonly nginx
Spécifiez "lecture seule" séparés par "," virgules.
$ docker inspect mount-c4
Vous pouvez voir que "RW": false dans "Mounts".
-# docker run -itd --nom Nom du conteneur-v nom du volume:Point de montage:source du conteneur ro
$ docker run -itd —-name mount-c5 -v copy-vol:/etc/nginx:ro nginx
Il peut être défini en lecture seule en définissant le nom du volume: point de montage: ro.
Recommended Posts