Je joue avec Docker dans l'environnement EC2 (Amazon Linux2). Quand j'ai remarqué, les points de montage proliféraient sur le système d'exploitation hôte. .. .. J'ai donc essayé différentes choses pour approfondir ma compréhension de Volume.
Extrait de la description de dockerfile-VOLUME dans la référence Docker
L'instruction> VOLUME crée un point de montage avec le nom spécifié et en fait un volume montable en externe à partir d'un autre hôte ou conteneur.
La commande docker run
initialise le volume nouvellement créé comme emplacement pour stocker les données à l'emplacement spécifié à partir de l'image de base.
Après avoir lu ceci, j'ai compris que "le répertoire spécifié par VOLUME est créé dans le conteneur", mais ** "En faire un volume montable en externe à partir d'un autre hôte ou conteneur" ** ,
Il a été reconnu que lorsque le conteneur a été lancé (exécuté), -v
était utilisé pour définir un répertoire pouvant être lié à un répertoire sur le système d'exploitation hôte. (Si vous ne spécifiez pas -v, il ne sera pas persistant après tout et les données seront supprimées)
J'ai donc vérifié le fonctionnement de Volume de différentes manières.
#Le volume n'existe pas(Avant de démarrer le conteneur)
[~]docker volume ls
DRIVER VOLUME NAME
#Démarrer le conteneur à partir de l'image CentOS
[~]docker run --name test_container -dt centos
#Le volume n'existe pas(Après avoir démarré le conteneur)
docker volume ls
DRIVER VOLUME NAME
#dockerfile(Volume basé sur l'image CentOS=/test_Définir le volume)
ARG baseimagetag=latest
FROM centos:${baseimagetag} AS baseimage
VOLUME /test_volume
#création d'image Docker
[~]docker build -t centos_mod .
#Le volume n'existe pas(Avant de démarrer le conteneur)
[~]docker volume ls
DRIVER VOLUME NAME
#CentOS(Modification)Lancer le conteneur à partir de l'image
[~]docker run --name test_container -dt centos_mod
#Le volume est créé(Après avoir démarré le conteneur)
docker volume ls
DRIVER VOLUME NAME
local ec1feead17bb87e24d3e2e6db716daf58d12747cbdd0b510fd30f507d7f8308b
#Vérifiez le point de montage sur le système d'exploitation hôte de Volume
#Automatiquement/var/lib/docker/volumes/Vous pouvez voir que le point de montage est créé en dessous
[~]docker inspect ec1feead17bb87e24d3e2e6db716daf58d12747cbdd0b510fd30f507d7f8308b
[
{
"CreatedAt": "2020-07-10T08:30:00+09:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/ec1feead17bb87e24d3e2e6db716daf58d12747cbdd0b510fd30f507d7f8308b/_data",
"Name": "ec1feead17bb87e24d3e2e6db716daf58d12747cbdd0b510fd30f507d7f8308b",
"Options": null,
"Scope": "local"
}
]
#Arrêter et supprimer des conteneurs
[~]docker stop test_container
[~]docker rm test_container
#Volume confirmé(Après avoir supprimé le conteneur)
#Le point de montage sur le système d'exploitation hôte existe
docker volume ls
DRIVER VOLUME NAME
local ec1feead17bb87e24d3e2e6db716daf58d12747cbdd0b510fd30f507d7f8308b
#CentOS(Modification)Lancer le conteneur à partir de l'image(Nommez le point de montage du système d'exploitation hôte(host_mount)Spécifié par
[~]docker run --name test_container -v host_mount:/test_volume -dt centos_mod
baf6954e9dbce1dd9ad3ae5c8286e63c01fd39689d79053725ae1800b70ea752
#Le volume est créé(Après avoir démarré le conteneur)
[~]docker volume ls
DRIVER VOLUME NAME
local host_mount
#Vérifiez le point de montage sur le système d'exploitation hôte de Volume
#Automatiquement/var/lib/docker/volumes/Sous subordonné-Nom spécifié par v/_Vous pouvez voir que le point de montage est créé dans les données
docker inspect host_mount
[
{
"CreatedAt": "2020-07-10T22:22:49+09:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/host_mount/_data",
"Name": "host_mount",
"Options": null,
"Scope": "local"
}
]
#CentOS(Modification)Lancer le conteneur à partir de l'image(Répertoire des points de montage du système d'exploitation hôte(/test_mount)Spécifié par
[~]docker run --name test_container -v /test_mount:/test_volume -dt centos_mod
e5e70d6235dbfe54950e2053f61236c1450d43c0b3aacfa38341e37cfacecaaa
#Vérifier le volume(Après avoir démarré le conteneur)
#Le point de montage ne s'affiche pas avec la commande suivante
[~]docker volume ls
DRIVER VOLUME NAME
#Vérifiez le point de montage à partir des informations du conteneur
[~]docker inspect test_container
##Extrait
"Mounts": [
{
"Type": "bind",
"Source": "/test_mount",
"Destination": "/test_volume",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
--Lorsque vous démarrez un conteneur à l'aide d'une image Docker avec VOLUME défini, Le répertoire spécifié par VOLUME est créé dans le conteneur en tant que zone de persistance.
docker volume ls
montre le répertoire créé dans la zone Volume (/ var / lib / docker / volumes) de Docker sur le système d'exploitation hôte.Affichez les informations de l'image avec docker inspect <nom de l'image>
et vérifiez si le répertoire est spécifié dans la partie ** "Volumes": **.
Exemple) Pour le conteneur MySQL / Var / lib / mysql est défini dans le conteneur comme une zone de persistance
"Volumes": {
"/var/lib/mysql": {}
},
Recommended Posts