Skip to Content
🎉 Utilisez JS efficacement →
DockerRĂ©seaux & stockageđŸ—ƒïž Cas Pratique : Stockage Docker

đŸ—ƒïž Cas Pratique : Stockage Docker

Dans ce cas pratique, nous allons explorer comment Docker gĂšre le stockage persistant en utilisant deux techniques courantes : les volumes Docker et les bind mounts. Nous allons crĂ©er un conteneur qui persiste ses donnĂ©es, mĂȘme aprĂšs son arrĂȘt ou sa suppression.

🎯 Objectif

  1. Utiliser un volume Docker pour persister les donnĂ©es d’un conteneur.
  2. Utiliser un bind mount pour partager des fichiers entre l’hîte et le conteneur.
  3. Vérifier la persistance des données aprÚs la suppression du conteneur.

🌐 Utiliser un Volume Docker

Les volumes Docker sont gĂ©rĂ©s par Docker lui-mĂȘme et sont stockĂ©s dans un rĂ©pertoire dĂ©diĂ© sur l’hĂŽte. Ils permettent de persister des donnĂ©es de maniĂšre simple et efficace, tout en Ă©tant indĂ©pendants du cycle de vie des conteneurs.

Nous allons commencer par lancer un conteneur MySQL en utilisant un volume Docker pour persister les données.

docker run -d \ --name mysql-volume \ -e MYSQL_ROOT_PASSWORD=rootpassword \ -v mysql-data:/var/lib/mysql \ mysql:latest

Explications :

  • -d : ExĂ©cute le conteneur en mode dĂ©tachĂ©.
  • --name mysql-volume : Donne un nom au conteneur (facilite les interactions).
  • -e MYSQL_ROOT_PASSWORD=rootpassword : DĂ©finit une variable d’environnement pour le mot de passe root.
  • -v mysql-data:/var/lib/mysql : Monte un volume nommĂ© mysql-data dans le rĂ©pertoire /var/lib/mysql, oĂč MySQL stocke ses donnĂ©es.

Docker va créer automatiquement le volume mysql-data. Pour vérifier que le volume a été créé, exécutez la commande suivante :

docker volume ls

Vous devriez voir mysql-data dans la liste des volumes.

🔄 VĂ©rifier la Persistance des DonnĂ©es avec le Volume

Nous allons maintenant arrĂȘter et supprimer le conteneur MySQL, puis le relancer pour vĂ©rifier que les donnĂ©es sont bien persistĂ©es.

  1. ArrĂȘter et supprimer le conteneur :
docker stop mysql-volume docker rm mysql-volume
  1. Relancer un conteneur avec le mĂȘme volume :
docker run -d \ --name mysql-volume \ -e MYSQL_ROOT_PASSWORD=rootpassword \ -v mysql-data:/var/lib/mysql \ mysql:latest

Le conteneur MySQL va redĂ©marrer en utilisant les mĂȘmes donnĂ©es que prĂ©cĂ©demment, prouvant que le volume a bien persistĂ© les informations de la base de donnĂ©es.

📂 Utiliser un Bind Mount

Un bind mount permet de lier un rĂ©pertoire spĂ©cifique de la machine hĂŽte Ă  un rĂ©pertoire du conteneur. Cela peut ĂȘtre utile pour partager des fichiers de configuration, du code source ou d’autres donnĂ©es entre l’hĂŽte et le conteneur.

Nous allons maintenant monter un répertoire de notre machine locale dans un conteneur Nginx.

  1. Créer un fichier sur la machine hÎte :

Créez un répertoire sur votre machine hÎte contenant une page HTML simple.

mkdir ~/nginx-html echo "<h1>Hello from Docker Bind Mount</h1>" > ~/nginx-html/index.html
  1. Lancer un conteneur Nginx avec un bind mount :
docker run -d \ --name nginx-bind \ -p 8080:80 \ -v ~/nginx-html:/usr/share/nginx/html \ nginx

Explications :

  • -p 8080:80 : Redirige le port 8080 de la machine hĂŽte vers le port 80 du conteneur.
  • -v ~/nginx-html:/usr/share/nginx/html : Lie le rĂ©pertoire local ~/nginx-html au rĂ©pertoire oĂč Nginx sert les fichiers HTML dans le conteneur (/usr/share/nginx/html).
  1. Accéder à la page web :

Ouvrez votre navigateur et accédez à http://localhost:8080. Vous devriez voir la page HTML que vous avez créée sur votre machine hÎte, prouvant que le bind mount fonctionne.

🔄 VĂ©rifier le Fonctionnement du Bind Mount

Modifiez le fichier index.html sur votre machine locale :

echo "<h1>Updated from Host</h1>" > ~/nginx-html/index.html

Rafraßchissez votre navigateur. Vous verrez immédiatement la mise à jour, car le conteneur utilise directement le fichier stocké sur votre machine.

đŸ§č Nettoyage

Une fois terminĂ©, vous pouvez arrĂȘter et supprimer les conteneurs et volumes avec ces commandes :

docker stop mysql-volume nginx-bind docker rm mysql-volume nginx-bind docker volume rm mysql-data

🎓 Conclusion

Dans ce cas pratique, nous avons explorĂ© deux mĂ©canismes de stockage Docker : les volumes, qui permettent de garantir la persistance des donnĂ©es indĂ©pendamment du cycle de vie des conteneurs, et les bind mounts, qui facilitent le partage direct de fichiers entre l’hĂŽte et les conteneurs. Ces techniques sont essentielles pour dĂ©velopper des applications nĂ©cessitant la persistance des donnĂ©es et l’intĂ©gration continue avec les systĂšmes de fichiers locaux.

mis Ă  jour le