Présentation
Les volumes Docker sont le mécanisme préféré pour configurer un stockage persistant pour vos conteneurs Docker. Les volumes sont des répertoires existants sur le système de fichiers hôte montés à l'intérieur d'un conteneur. Ils sont accessibles à la fois depuis le conteneur et depuis le système hôte.
Docker permet également aux utilisateurs de monter des répertoires partagés sur le système de partage de fichiers à distance NFS. Les volumes créés à cet effet utilisent le propre pilote NFS de Docker, éliminant ainsi la nécessité de monter le répertoire NFS sur le système hôte.
Ce didacticiel vous montrera comment créer et utiliser des volumes Docker NFS.
Prérequis
- Serveur NFS installé et configuré sur la machine distante.
- Docker installé sur la machine locale.
- Un compte utilisateur avec des privilèges root/sudo.
Créer un volume Docker NFS
Le moyen le plus simple de créer et de gérer des volumes Docker consiste à utiliser le docker volume
commande et ses sous-commandes.
La syntaxe de création d'un volume NFS Docker comprend deux options.
- Le
--driver
l'option définit lelocal
pilote de volume, qui accepte des options similaires aumount
commande sous Linux. - Le
--opt
l'option est appelée plusieurs fois pour fournir plus de détails sur le volume.
Les détails incluent :
- Le type de volume.
- Le mode d'écriture.
- L'adresse IP ou Web du serveur NFS distant.
- Le chemin d'accès au répertoire partagé sur le serveur.
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=[ip-address],rw \
--opt device=:[path-to-directory] \
[volume-name]
L'exemple ci-dessous illustre la création d'un volume NFS Docker nommé nfs-volume
. Le volume contient le /mnt/nfsdir
répertoire situé sur le serveur, avec le rw
autorisation (lecture/écriture). L'adresse IP du serveur est 10.240.12.70
.
La commande exécutée avec succès affiche le nom du volume.
Listez les volumes Docker disponibles.
docker volume ls
La sortie répertorie le volume que vous avez créé.
Inspectez le volume avec inspect
sous-commande.
docker volume inspect [volume-name]
La sortie affiche la configuration du volume.
Monter NFS dans un conteneur
Pour monter le volume NFS dans un conteneur, installez le nfs-common
package sur le système hôte.
Commencez par mettre à jour les référentiels.
sudo apt update
Utilisez APT pour installer le nfs-common
paquet.
sudo apt install nfs-common
Confirmez que vous souhaitez installer le package et attendez la fin de l'installation.
Utilisez la commande docker run pour démarrer le conteneur. Spécifiez le volume NFS et le point de montage dans le --mount
rubrique.
docker run -d -it \
--name [container-name] \
--mount source=[volume-name],target=[mount-point]\
[image-name]
L'exemple ci-dessous monte le volume NFS nommé nfs-volume
au /mnt
répertoire dans le conteneur.
Confirmez que le volume a été monté avec succès en utilisant docker inspect
commande.
docker inspect [container-name]
Les Mounts
section de la sortie contient les volumes montés dans le conteneur.
Entrez dans le shell bash de l'environnement de conteneur avec docker exec
:
docker exec -it [container-name] /bin/bash
Lister le contenu du /mnt
répertoire.
ls /mnt
La sortie montre les fichiers hébergés dans /mnt/nfsdir
répertoire sur le serveur.
Si vous créez un fichier dans le conteneur Docker, il sera également accessible dans le répertoire d'origine sur le serveur. Pour tester, utilisez la commande touch pour créer un fichier vide dans le /mnt
répertoire.
touch /mnt/docker1.txt
Sur le serveur, accédez au répertoire que vous avez partagé et répertoriez son contenu. Le fichier créé dans le conteneur Docker apparaît.
Monter des volumes NFS avec Docker Compose
Si vous utilisez Docker Compose pour gérer vos conteneurs, montez le volume NFS en le définissant dans le fichier YML.
Créez le fichier YML.
nano docker-compose.yml
Définissez le volume NFS dans les volumes
rubrique.
version: "3.2"
services:
[service-name]:
image: [docker-image]
ports:
- "[port]:[port]"
volumes:
- type: volume
source: [volume-name]
target: /nfs
volume:
nocopy: true
volumes:
[volume-name]:
driver_opts:
type: "nfs"
o: "addr=[ip-address],nolock,soft,rw"
device: ":[path-to-directory]"
Créez et démarrez le conteneur avec le docker-compose up
commande.