Les fichiers (et autres données) stockés dans un conteneur Docker ne sont pas conservés si le conteneur est supprimé. Pour surmonter cela, Docker volumes et lier les montures peut être utilisé. Ce guide traite de l'utilisation des volumes Docker comme moyen de stocker des données persistantes. Considérez les volumes comme un disque dur externe ; si le disque dur interne est effacé, le disque dur externe conserve toujours ses propres données. Les volumes sont stockés sur l'hôte et indépendamment de tout conteneur ou image. Ils peuvent être montés sur différents conteneurs selon les besoins et, puisque les volumes sont séparés de l'image, ils n'augmentent pas la taille de l'image.
Avant de commencer
-
Si vous ne l'avez pas déjà fait, créez un compte Linode et une instance de calcul. Consultez nos guides Premiers pas avec Linode et Création d'une instance de calcul.
-
Suivez notre guide Configuration et sécurisation d'une instance de calcul pour mettre à jour votre système. Vous pouvez également définir le fuseau horaire, configurer votre nom d'hôte, créer un compte utilisateur limité et renforcer l'accès SSH.
-
Installez Docker sur votre système.
-
Ce guide suppose que vous êtes à l'aise avec la ligne de commande Linux. VoirUtiliser le terminal.
-
Ce guide suppose que vous avez une compréhension de base de Docker. De plus, vous devez déjà avoir installé Docker sur votre serveur et déployé une image Docker. VoirUne introduction à Docker.
Création d'un volume Docker
Pour commencer à comprendre les volumes Docker, vous aurez besoin d'un volume sur lequel travailler.
-
Connectez-vous à votre Linode (ou à un autre serveur Linux) via SSH ou Lish.
-
Créez un volume en entrant la commande suivante, en remplaçant example_volume avec l'étiquette de votre volume.
docker volume create example_volume
-
Vérifiez que le volume a été créé.
docker volume list
La sortie devrait ressembler à ceci :
[[email protected] ~]$ docker volume list DRIVER VOLUME NAME local example_volume [[email protected] ~]$
Inspecter un volume Docker
Si vous voulez voir plus de détails sur un volume, vous pouvez utiliser le docker volume inspect
commande :
docker volume inspect example_volume
Le résultat doit ressembler à ce qui suit :
[[email protected] ~]$ docker volume inspect example_volume
[
{
"CreatedAt": "2021-05-19T15:27:27Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/example_volume/_data",
"Name": "example_volume",
"Options": {},
"Scope": "local"
}
]
[[email protected] ~]$
Monter un volume Docker sur un conteneur
Pour que les données d'un conteneur persistent, vous devez avoir un volume Docker monté à l'aide de l'indicateur --mount flag
dans l'docker run
commande. Remplacer [volume_name] avec le nom de votre volume, [chemin] avec le chemin absolu sur lequel vous souhaitez monter le volume dans le conteneur, et [docker_image] avec le nom de votre image.
docker run --mount source=[volume_name],destination=[path] [docker_image]
Par exemple, la commande suivante monte le volume nommé example_volume au chemin /example_volume
à l'intérieur d'un conteneur en utilisant ubuntu
photo.
docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
Cette commande exécute l'image, monte le volume et connecte l'utilisateur en tant que root sur l'image Ubuntu. Une fois en tant que root, vous pouvez vérifier que "example_volume" est monté avec juste ls
. Le résultat de tout cela devrait ressembler à ceci :
[[email protected] ~]$ docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
[email protected]:/# ls
bin dev example_volume lib lib64 media opt root sbin sys usr
boot etc home lib32 libx32 mnt proc run srv tmp var
[email protected]:/#
Copier et partager des fichiers entre conteneurs
Les volumes Docker permettent également le partage entre conteneurs.
-
Montez le volume en suivant les instructions de la section Montage d'un volume Docker sur un conteneur. Voici l'exemple utilisé précédemment :
docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
-
Changez le répertoire en
example_data
répertoire.cd example_data
-
Créez un fichier de test dans le volume en entrant le
touch
suivant commande.touch example_file.txt
-
Quittez ensuite le conteneur.
exit
-
Exécutez maintenant une autre image docker avec le même volume monté. Le
debian
l'image est utilisée dans l'exemple ci-dessous.docker run -it --name=example_2 --mount source=example_volume,destination=/example_volume debian
-
Dans le nouveau conteneur (appelé "example_2" si vous utilisez une commande similaire à celle ci-dessus), accédez au répertoire du volume.
cd example_volume
-
Entrez
ls
pour voir le fichier.ls
Monter un répertoire depuis votre Linode vers un conteneur
Au lieu de créer un nouveau volume, vous pouvez également monter un répertoire depuis votre Linode (ou un autre système) vers un conteneur Docker. Ceci est accompli via des montages liés et est utile lorsque vous souhaitez stocker et accéder aux fichiers de votre conteneur directement à partir de votre système. Par rapport aux volumes, les montages liés ont des fonctionnalités limitées.
-
Connectez-vous à votre Linode (ou à un autre serveur Linux) via SSH ou Lish.
-
Utilisez la commande suivante pour exécuter Docker, en remplaçant [local-directory] avec le chemin absolu vers le répertoire de votre Linode que vous souhaitez monter (utilisez
$(pwd)
pour monter le répertoire courant). Remplacez ensuite [mount-directory] par le chemin absolu sur votre conteneur où vous souhaitez accéder aux fichiers locaux et remplacez [image] avec l'image Docker que vous souhaitez utiliser.docker run --rm -it -v [local-directory]:[mount-directory] [image]
-
Vous êtes automatiquement connecté au conteneur. Accédez à votre répertoire de montage et affichez les fichiers.
ls
Vous devriez voir tous les fichiers que vous avez stockés dans le répertoire local.
Lectures complémentaires
Il y a beaucoup plus de Docker Volumes que nous ne pouvons aborder ici, et le cas d'utilisation de chacun sera différent. Cependant, deux excellents endroits pour en savoir plus à ce sujet se trouvent sur le site Docs de Docker lui-même :
-
Utiliser les volumes sur Docker Docs
-
Résoudre les erreurs de volume dans Docker Docs
Plus d'informations
Vous pouvez consulter les ressources suivantes pour plus d'informations sur ce sujet. Bien que ceux-ci soient fournis dans l'espoir qu'ils seront utiles, veuillez noter que nous ne pouvons pas garantir l'exactitude ou l'actualité des documents hébergés en externe.
- Utiliser des volumes sur Docker Docs
- Résoudre les erreurs de volume dans Docker Docs