5.1 L'idée des répertoires liés (bind mounts)
Monter des répertoires hôtes dans des conteneurs en utilisant des répertoires liés (bind mounts) est une fonctionnalité puissante de Docker, qui permet aux conteneurs d'utiliser directement les fichiers et répertoires présents sur le système hôte. C'est surtout pratique pour le développement, les tests et la configuration, quand on a besoin d'utiliser des fichiers locaux sans avoir à les copier dans le conteneur. Dans cette conférence, on va voir comment utiliser les bind mounts, avec des exemples et quelques best practices.
Les bind mounts permettent de monter des répertoires ou fichiers spécifiques depuis le système hôte dans des conteneurs. C'est différent des volumes, qui sont gérés par Docker et stockés dans un répertoire spécifique.
Avantages des bind mounts
- Accès direct aux fichiers de l'hôte : Les conteneurs peuvent directement utiliser et modifier les fichiers présents sur l'hôte.
- Pratique pour le développement : Les développeurs peuvent modifier les fichiers sur l'hôte et voir ces changements en temps réel dans les conteneurs.
- Flexibilité : N'importe quel répertoire sur l'hôte peut être monté dans un conteneur.
Commande pour monter les bind mounts
Les bind mounts sont montés en utilisant les paramètres -v
ou --mount
lors du démarrage d'un conteneur.
5.2 Exemples d'utilisation du paramètre -v
1. Monter un répertoire de l'hôte dans un container
Un exemple super simple de montage d'un répertoire de l'hôte dans un container :
docker run -d --name my_container -v /path/on/host:/path/in/container nginx
Dans cet exemple, le répertoire /path/on/host
sur l'hôte est monté sur le répertoire /path/in/container
à l'intérieur du container nginx.
2. Monter un fichier de l'hôte dans un container
Tu peux aussi monter des fichiers spécifiques :
docker run -d --name my_container -v /path/on/host/config.conf:/etc/nginx/nginx.conf nginx
Dans cet exemple, le fichier de configuration config.conf
sur l'hôte est monté comme fichier de configuration nginx.conf
à l'intérieur du container.
5.3 Exemples d'utilisation du paramètre --mount
Le paramètre --mount
offre une manière plus détaillée de monter des répertoires liés avec la possibilité de spécifier différents paramètres.
1. Monter un répertoire en utilisant --mount
docker run -d --name my_container --mount type=bind,source=/path/on/host,target=/path/in/container nginx
Cet exemple est similaire à l'exemple précédent avec -v
, mais utilise une syntaxe plus détaillée.
2. Montage en lecture seule
docker run -d --name my_container --mount
type=bind,source=/path/on/host,target=/path/in/container,readonly nginx
Dans cet exemple, le répertoire est monté en mode lecture seule, ce qui empêche les modifications de fichiers dans le container.
5.4 Exemples pratiques
Pour le développement d'une application web, tu peux monter un répertoire avec le code source de l'hôte dans le container.
Créer un répertoire avec le code source sur l'hôte :
mkdir -p ~/my_web_app
echo "Hello, World!" > ~/my_web_app/index.html
Lancement du container avec le montage du répertoire :
docker run -d --name web_dev -v ~/my_web_app:/usr/share/nginx/html nginx
Maintenant, toutes les modifications dans le répertoire ~/my_web_app sur l'hôte seront immédiatement reflétées dans le container.
Exemple 2 : Utilisation des fichiers de configuration
Tu peux monter des fichiers de configuration d'un répertoire de l'hôte dans le container.
Créer un fichier de configuration sur l'hôte :
echo "user www-data;" > ~/nginx.conf
echo "worker_processes auto;" >> ~/nginx.conf
Lancement du container avec le montage du fichier de configuration :
docker run -d --name nginx_custom -v ~/nginx.conf:/etc/nginx/nginx.conf nginx
Dans cet exemple, le fichier de configuration Nginx sur l'hôte est utilisé à l'intérieur du container.
5.5 Vérification des répertoires et fichiers montés
Tu peux vérifier le contenu des répertoires et fichiers montés en utilisant la commande docker exec pour exécuter des commandes à l'intérieur du conteneur.
Exemple
Vérification du contenu d'un répertoire :
docker exec -it my_container ls /path/in/container
Vérification du contenu d'un fichier :
docker exec -it my_container cat /path/in/container/config.conf
Suppression des répertoires bindés
Les répertoires bindés ne sont pas gérés directement par Docker, donc leur suppression se fait au niveau du système de fichiers de l'hôte.
Exemple
Suppression d'un répertoire bindé sur l'hôte :
rm -r /path/on/host
GO TO FULL VERSION