Pour éliminer les expériences et croyances égoïstes suivantes Je l'ai écrit dans la perspective qu'il était facile de comprendre si je pense de cette façon
――Qu'est-ce que «.:»! La confusion initiale --Tous les volumes sont destinés au montage du côté hôte
Il existe les mécanismes suivants de Docker, et je pense que le mécanisme pour résoudre chacun est le volume.
--host volume? (je ne connais pas le nom exact)
Commençons par les cas où chacun est nécessaire
Normalement, lorsque le conteneur est arrêté, les données du conteneur ne sont pas conservées (= non persistantes) Le mécanisme pour rendre cette persistance est le volume Exemple) Tous les éléments qui ne doivent pas être perdus à chaque fois, y compris les données de base de données
Alors que Docker traite le conteneur hôte comme un environnement indépendant, il est possible de monter un répertoire spécifique du côté hôte et de synchroniser les données entre l'hôte et le conteneur. Exemple) Lorsque le fichier édité sur l'hôte est reflété dans le conteneur à tout moment, comme dans l'environnement de développement.
Normalement, les conteneurs sont traités comme des environnements indépendants et les fichiers ne sont pas partagés. Partagez facilement des fichiers entre des conteneurs en utilisant un volume nommé Exemple) Lors du partage avec du contenu statique entre le serveur Web (conteneur) et le serveur d'applications (conteneur)
Je pense que cela est suffisant pour les cas où vous souhaitez uniquement garantir la persistance, n'avez pas besoin de synchroniser avec l'hôte et n'avez pas besoin de partager avec d'autres conteneurs. De plus, dans le cadre d'un volume partagé persistant, Je pense que c'est efficace dans les cas où vous osez maintenir l'indépendance entre les conteneurs. Par exemple, certains répertoires sous le volume sur lequel l'hôte est monté peuvent être séparés en tant que volume anonyme, et le chemin spécifié par un volume anonyme peut garantir l'indépendance entre les conteneurs.
host mount: <host_path>:<container_path> Montez le répertoire hôte et synchronisez-le avec le chemin dans le conteneur
volumes:
- .:/myapp # .(Répertoire actuel)Monter et dans le conteneur/Synchroniser avec myapp
named volume: <volume_name>:<container_path> Traite le chemin du conteneur comme un volume et le rend persistant. Le fait d'être nommé facilite le partage avec d'autres conteneurs. ** Même sous le chemin monté sur l'hôte, le volume nommé est traité comme un autre volume et séparé du côté hôte **
volumes:
- node_modules:/myapp/node_modules #Persister le chemin dans le conteneur en tant que volume, nœud_Gérer avec les modules de nom
anonymous volume: <container_path> La différence avec le volume nommé est qu'il est anonyme, il n'a pas de nom (mais il est assigné un hachage aléatoire), et cela devrait être bien si vous voulez juste le rendre persistant sans supposer qu'il est partagé avec d'autres conteneurs.
volumes:
- /myapp/node_modules #Décrivez uniquement le chemin dans le conteneur et rendez-le persistant en tant que volume
(Prévu pour être mis à jour à tout moment)
Recommended Posts