Volume Docker

RappelCycle de vie des conteneurs

Le cycle de vie d'un conteneur est différent de celui d'une machine virtuelle classique. Le conteneur vit généralement aussi longtemps que l'application qu'il contient et inversement. Cependant, cela impacte négativement les données de l'application. De nombreuses applications ont des besoins d'historiser des changements ou des modifications des données qu'elle manipule. Lors du management d'une application dans une machine virtuelle classique, l'application est régulièrement mise à jour ou subit des maintenances. Lorsque cette application meurt, les données associées à l'application sont conservées dans le système de fichier.

Dans un conteneur, le fonctionnement est différent. Les mises à jour des applications s'effectuent en construisant systématiquement un nouveau conteneur avec la version la plus récente de l'application et en supprimant simplement l'ancien. De même, lorsqu'une application fonctionne mal, un nouveau conteneur doit être lancé et l'ancien doit être jeté. En résumé, les conteneurs ont un cycle de vie très court.

Dans l'environnement des conteneurs, l'environnement d'exécution complet, y compris ses fichiers de données, est généralement regroupé et encapsulé dans le conteneur. Pour une raison quelconque, lorsqu'un conteneur est détruit, les fichiers de données de l'application périssent également avec le conteneur.

Si l'on souhaite conserver les données des applications, on doit donc stocker ces données à l'extérieur des conteneurs et transmettre ces données dans les conteneurs pour qu'elles puissent être lues et modifiées par l'application.

Pour gérer cette problématique, Docker introduit une fonctionnalité de volume.

Fondamental

Les volumes de données Docker permettent donc de partager des données entre la machine Docker et les conteneurs. Ces volumes font partie du système de fichier de la machine Docker et peuvent être utilisés de plusieurs manières.

  • Dans la construction d'une image avec l'instruction VOLUME

  • Utiliser l'option -v lors du lancement d'un conteneur Docker