<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Volume on slash-root.fr</title><link>https://slash-root.fr/tags/volume/</link><description>Recent content in Volume on slash-root.fr</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><lastBuildDate>Sun, 15 Jun 2025 16:56:25 +0200</lastBuildDate><atom:link href="https://slash-root.fr/tags/volume/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker : Configuration et gestion du stockage</title><link>https://slash-root.fr/docker-configuration-et-gestion-du-stockage/</link><pubDate>Sun, 15 Jun 2025 16:56:25 +0200</pubDate><guid>https://slash-root.fr/docker-configuration-et-gestion-du-stockage/</guid><description>&lt;img src="https://slash-root.fr/docker-configuration-et-gestion-du-stockage/cover.png" alt="Featured image of post Docker : Configuration et gestion du stockage" /&gt;&lt;p&gt;Salut les admins sys et autres dompteurs de conteneurs ! Aujourd'hui, plongeons dans les profondeurs du stockage Docker. Comme on dit dans notre jargon : &amp;quot;Un disque mal configuré est à un admin système ce que Kryptonite est à Superman - une faiblesse qui peut tout paralyser.&amp;quot;&lt;/p&gt;
&lt;h2 id="comprendre-le-stockage-dans-docker"&gt;&lt;a href="#comprendre-le-stockage-dans-docker" class="header-anchor"&gt;&lt;/a&gt;Comprendre le stockage dans Docker
&lt;/h2&gt;&lt;p&gt;Docker utilise un système de stockage en couches qui peut être à la fois génial et déroutant. Chaque instruction dans un Dockerfile crée une nouvelle couche en lecture seule, et seul le conteneur en fonctionnement dispose d'une couche supérieure en lecture-écriture.&lt;/p&gt;
&lt;p&gt;Par défaut, Docker stocke toutes ses données (images, conteneurs, volumes) dans &lt;code&gt;/var/lib/docker&lt;/code&gt;. Sur un serveur de production, cette partition peut rapidement devenir le goulot d'étranglement de votre système.&lt;/p&gt;
&lt;h3 id="configuration-du-pilote-de-stockage"&gt;&lt;a href="#configuration-du-pilote-de-stockage" class="header-anchor"&gt;&lt;/a&gt;Configuration du pilote de stockage
&lt;/h3&gt;&lt;p&gt;Docker propose plusieurs pilotes de stockage, chacun avec ses avantages et inconvénients. Vous pouvez configurer le pilote à utiliser dans le fichier &lt;code&gt;/etc/docker/daemon.json&lt;/code&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;storage-driver&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;overlay2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note :&lt;/strong&gt; &lt;code&gt;overlay2&lt;/code&gt; est généralement le pilote recommandé pour les distributions Linux modernes, offrant le meilleur équilibre entre performance et fonctionnalités.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Après cette modification, un redémarrage du service Docker est nécessaire :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl restart docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="les-différents-pilotes-de-stockage"&gt;&lt;a href="#les-diff%c3%a9rents-pilotes-de-stockage" class="header-anchor"&gt;&lt;/a&gt;Les différents pilotes de stockage
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;overlay2&lt;/strong&gt; : Le pilote recommandé pour la plupart des cas d'usage&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avantages : Bonnes performances, compatibilité&lt;/li&gt;
&lt;li&gt;Prérequis : Noyau Linux 4.0+ et systèmes de fichiers modernes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le pilote overlay2 repose sur la fonctionnalité OverlayFS du noyau Linux, qui permet de superposer plusieurs systèmes de fichiers. Il fonctionne avec la plupart des systèmes de fichiers courants (ext4, xfs) et offre de bien meilleures performances que l'ancien pilote overlay.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;devicemapper&lt;/strong&gt; : Utilisé principalement sur les anciennes versions de CentOS/RHEL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pour la production, configurez-le en mode &lt;code&gt;direct-lvm&lt;/code&gt; plutôt qu'en mode loop-lvm par défaut&lt;/li&gt;
&lt;li&gt;Permet d'utiliser un périphérique de bloc dédié pour les données Docker, offrant de meilleures performances&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;storage-driver&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;devicemapper&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;storage-opts&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;dm.directlvm_device=/dev/xvdf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Systèmes de fichiers avancés et distribués&lt;/strong&gt; : Pour aller plus loin&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les systèmes comme &lt;strong&gt;btrfs&lt;/strong&gt; et &lt;strong&gt;zfs&lt;/strong&gt; offrent des fonctionnalités avancées comme les snapshots&lt;/li&gt;
&lt;li&gt;Les systèmes de fichiers distribués comme &lt;strong&gt;Ceph&lt;/strong&gt; ou &lt;strong&gt;GlusterFS&lt;/strong&gt; permettent de créer une infrastructure de stockage Docker hautement disponible et évolutive&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Astuce&lt;/strong&gt; : Pour tirer pleinement profit de ces systèmes distribués, utilisez la technique du &amp;quot;volume bind déguisé&amp;quot; qui permet de créer un volume Docker qui pointe vers un point de montage réseau&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="déplacer-le-répertoire-de-données-docker"&gt;&lt;a href="#d%c3%a9placer-le-r%c3%a9pertoire-de-donn%c3%a9es-docker" class="header-anchor"&gt;&lt;/a&gt;Déplacer le répertoire de données Docker
&lt;/h2&gt;&lt;p&gt;Si votre partition &lt;code&gt;/var&lt;/code&gt; est trop petite, vous pouvez déplacer le répertoire de données Docker vers un autre emplacement :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;data-root&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;/mnt/docker-data&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Attention :&lt;/strong&gt; Ne modifiez jamais ce paramètre sur une installation Docker existante sans migrer correctement les données !&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour migrer les données d'une installation existante :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Arrêter Docker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl stop docker
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Créer le nouveau répertoire&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /mnt/docker-data
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Copier les données existantes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo rsync -aP /var/lib/docker/ /mnt/docker-data/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Configurer le nouveau chemin dans daemon.json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Puis redémarrer Docker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl start docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="volumes-bind-déguisés--la-technique-du-ninja-du-stockage"&gt;&lt;a href="#volumes-bind-d%c3%a9guis%c3%a9s--la-technique-du-ninja-du-stockage" class="header-anchor"&gt;&lt;/a&gt;Volumes bind déguisés : la technique du ninja du stockage
&lt;/h2&gt;&lt;p&gt;Une des techniques les plus astucieuses dans l'arsenal de l'admin Docker est celle du &amp;quot;volume bind déguisé&amp;quot; - ou comment faire passer un bind mount pour un volume Docker respectable, tout en gardant le contrôle sur l'emplacement physique des données.&lt;/p&gt;
&lt;p&gt;Imaginez pouvoir dire à vos conteneurs : &amp;quot;Voici un volume Docker standard&amp;quot; alors qu'en coulisses, vous stockez les données sur votre cluster Ceph soigneusement configuré. C'est comme servir un plat végétarien à vos invités sans qu'ils ne remarquent l'absence de viande - l'élégance à l'état pur.&lt;/p&gt;
&lt;p&gt;Cette technique est particulièrement précieuse quand vous travaillez avec :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Des systèmes de stockage distribués (Ceph, GlusterFS)&lt;/li&gt;
&lt;li&gt;Des montages NFS pour un stockage partagé&lt;/li&gt;
&lt;li&gt;Des volumes qui doivent survivre à la migration de vos conteneurs&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pour les détails d'implémentation&lt;/strong&gt;, consultez mon article dédié : &lt;a href="https://slash-root.fr/docker-volume-bind-deguise/"&gt;Docker : Volume bind déguisé&lt;/a&gt; qui vous explique pas à pas comment mettre en place cette technique.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="nettoyage-de-lespace-disque"&gt;&lt;a href="#nettoyage-de-lespace-disque" class="header-anchor"&gt;&lt;/a&gt;Nettoyage de l&amp;rsquo;espace disque
&lt;/h2&gt;&lt;p&gt;Docker a tendance à accumuler des données inutilisées. Voici quelques commandes pour faire le ménage :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Supprimer les conteneurs arrêtés, réseaux non utilisés, images dangling et cache de build&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker system prune
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Pour être encore plus agressif et supprimer aussi les images non utilisées&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker system prune -a
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Pour récupérer de l&amp;#39;espace sur les volumes non utilisés&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker volume prune
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="bonnes-pratiques-pour-la-gestion-du-stockage"&gt;&lt;a href="#bonnes-pratiques-pour-la-gestion-du-stockage" class="header-anchor"&gt;&lt;/a&gt;Bonnes pratiques pour la gestion du stockage
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Utilisez des images légères&lt;/strong&gt; : Préférez les images basées sur Alpine quand c'est possible&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Optimisez vos Dockerfiles&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Combinez les commandes RUN pour réduire le nombre de couches&lt;/li&gt;
&lt;li&gt;Nettoyez les caches de paquets dans la même instruction qui les installe&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-dockerfile" data-lang="dockerfile"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;RUN&lt;/span&gt; apt update &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt install -y &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; package1 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; package2 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt clean &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; rm -rf /var/lib/apt/lists/*&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Utilisez .dockerignore&lt;/strong&gt; pour exclure les fichiers inutiles du contexte de build&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Surveillez régulièrement&lt;/strong&gt; l'espace disque utilisé par Docker avec &lt;code&gt;docker system df&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configurez un cron job&lt;/strong&gt; pour nettoyer périodiquement les ressources inutilisées&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="conclusion"&gt;&lt;a href="#conclusion" class="header-anchor"&gt;&lt;/a&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;La gestion du stockage Docker ressemble parfois à un jeu de Tetris où les blocs seraient des gigaoctets - il faut savoir optimiser l'espace pour éviter le game over.&lt;/p&gt;
&lt;p&gt;En configurant correctement votre pilote de stockage et en adoptant de bonnes pratiques de nettoyage, vous pourrez éviter ce moment gênant où vous devez expliquer pourquoi le serveur de production s'est arrêté juste parce qu'il y avait trop d'images &amp;quot;hello-world&amp;quot; qui traînaient.&lt;/p&gt;
&lt;p&gt;Et souvenez-vous : dans un monde de conteneurs éphémères, les données persistantes méritent toujours une réflexion approfondie (et un bon volume Docker).&lt;/p&gt;</description></item><item><title>Docker : Volume bind déguisé</title><link>https://slash-root.fr/docker-volume-bind-deguise/</link><pubDate>Wed, 11 Oct 2023 11:25:12 +0200</pubDate><guid>https://slash-root.fr/docker-volume-bind-deguise/</guid><description>&lt;img src="https://slash-root.fr/docker-volume-bind-deguise/cover.png" alt="Featured image of post Docker : Volume bind déguisé" /&gt;&lt;p&gt;Avec Docker, il y a principalement 2 types de volumes qui sont utilisés :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Les volumes &amp;quot;volume&amp;quot;&lt;/strong&gt; : Permet de stocker un répertoire du conteneur dans un volume docker stocké sur l'host (/var/lib/docker/volumes).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Les volumes &amp;quot;bind&amp;quot;&lt;/strong&gt; : Permet de monter un répertoire présent sur l'host dans un conteneur.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Personnellement, j'utilise la plupart du temps des volumes de type &amp;quot;bind&amp;quot; afin d'avoir de la persistence pour certaines données d'un conteneur. Par exemple, une base de donnée.&lt;/p&gt;
&lt;p&gt;Le problème que je recontre parfois est la gestion des utilisateurs/groupes propriétaires et des permissions sur les données stockées dans ce type de volume &amp;quot;bind&amp;quot;.&lt;/p&gt;
&lt;p&gt;Avec un volume &amp;quot;volume&amp;quot;, l'avantage est que tout est géré par docker. Par contre, je ne souhaite pas forcément stocker ce volume docker dans /var/lib/docker/volumes de l'host.&lt;/p&gt;
&lt;p&gt;Alors, nous allons voir comment utilisé un volume docker mais qui en faites sera un volume de type bind. Ce que je nomme &lt;u&gt;un volume bind déguisé en volume docker&lt;/u&gt; 🙂&lt;/p&gt;
&lt;h2 id="création-du-volume-docker"&gt;&lt;a href="#cr%c3%a9ation-du-volume-docker" class="header-anchor"&gt;&lt;/a&gt;Création du volume docker
&lt;/h2&gt;&lt;p&gt;Tout d'abord, créer un répertoire local sur l'host qui stockera les données :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -m &lt;span style="color:#ae81ff"&gt;775&lt;/span&gt; -p /srv/docker/volumes/data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis, changer l'utilisateur et groupe propriétaire :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo chown -R $USER:docker /srv/docker/volumes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Enfin, créer le volume docker :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker volume create --driver local &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --opt type&lt;span style="color:#f92672"&gt;=&lt;/span&gt;none &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --opt device&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/srv/docker/volumes/data &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --opt o&lt;span style="color:#f92672"&gt;=&lt;/span&gt;bind vol_data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;--driver local&lt;/strong&gt; : Définit le driver docker à utiliser à local (par défaut).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;--opt type=none&lt;/strong&gt; : Il est important de bien définir le type à none.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;--opt device=&lt;/strong&gt;&lt;HOST_PATH&gt; : Où seront stocké les données du volume sur l'host.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;--opt o=bind&lt;/strong&gt; &lt;VOL_NAME&gt;: C'est avec cette option que le volume docker sera en faites un volume bind.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vérifier la création du volume :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ docker volume list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DRIVER VOLUME NAME
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;local vol_data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vérifier les propriétés du volume :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ docker inspect vol_data
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;CreatedAt&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;2023-10-11T11:15:38+02:00&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Driver&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;local&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Labels&amp;#34;&lt;/span&gt;: null,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Mountpoint&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;/var/lib/docker/volumes/vol_data/_data&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;vol_data&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Options&amp;#34;&lt;/span&gt;: &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;device&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;/srv/docker/volumes/data&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;o&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;bind&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;none&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Scope&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;local&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Un volume nommé &lt;code&gt;vol_data&lt;/code&gt; est à présent disponible pour un conteneur.&lt;/p&gt;
&lt;h3 id="utilisation-du-volume-docker"&gt;&lt;a href="#utilisation-du-volume-docker" class="header-anchor"&gt;&lt;/a&gt;Utilisation du volume docker
&lt;/h3&gt;&lt;h4 id="avec-docker-run"&gt;&lt;a href="#avec-docker-run" class="header-anchor"&gt;&lt;/a&gt;Avec docker run
&lt;/h4&gt;&lt;p&gt;Pour utiliser ce volume docker avec &lt;code&gt;docker run&lt;/code&gt; , comme avec un volume docker &amp;quot;classique&amp;quot;, utiliser l'option &lt;code&gt;--volume vol_data:/data&lt;/code&gt;. Cela montera le volume docker &amp;quot;vol_data&amp;quot; précédement créé dans le point de montage &amp;quot;/data&amp;quot; du conteneur.&lt;/p&gt;
&lt;h4 id="avec-docker-compose"&gt;&lt;a href="#avec-docker-compose" class="header-anchor"&gt;&lt;/a&gt;Avec docker compose
&lt;/h4&gt;&lt;p&gt;Pour utiliser ce volume docker dans un &lt;code&gt;docker-compose.yml&lt;/code&gt;, c'est comme un volume classique :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;services&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;app&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;vol_data:/data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;vol_data&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="portainer"&gt;&lt;a href="#portainer" class="header-anchor"&gt;&lt;/a&gt;Portainer
&lt;/h4&gt;&lt;p&gt;Si portainer est utilisé pour gérer l'hôte docker, le volume apparaitra dans la section &amp;quot;Volumes&amp;quot; de l'interface web. Si vous créez vos conteneurs, services, stacks swarm sur Portainer, vous pourrez l'utiliser sans problème.&lt;/p&gt;
&lt;p&gt;Toutefois, il est impossible de créer ce genre de volume via l'interface web de portainer.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Attention cependant au nom du volume que vous lui donner lors de sa création.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Par exemple, je souhaite utiliser un volume docker (qui finalement sera de type bind) dans une stack swarm qui s'appelle &amp;quot;webapp&amp;quot;. Lors de la création du volume, je le nommerai &amp;quot;webapp_vol_data&amp;quot; et dans mon fichier yaml de la stack, j'appelerai ce volume uniquement &amp;quot;vol_data&amp;quot;.&lt;/p&gt;
&lt;p&gt;Si le volume utilisé dans un docker-compose n'est pas bien définit au niveau du nommage, un volume docker &amp;quot;standard&amp;quot; sera alors automatiquement créer à la place et celui-ci sera dans /var/lib/docker/volumes.&lt;/p&gt;
&lt;p&gt;Donc bien penser à vérifier que les données soient au bon endroit sur l'host. Surtout si les données doivent être stockées sur un volume réseau !&lt;/p&gt;</description></item></channel></rss>