<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ingress on slash-root.fr</title><link>https://beta.slash-root.fr/tags/ingress/</link><description>Recent content in Ingress on slash-root.fr</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><lastBuildDate>Sun, 15 Jun 2025 16:17:21 +0200</lastBuildDate><atom:link href="https://beta.slash-root.fr/tags/ingress/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker : Configuration des réseaux par défaut</title><link>https://beta.slash-root.fr/docker-configuration-des-reseaux-par-defaut/</link><pubDate>Sun, 15 Jun 2025 16:17:21 +0200</pubDate><guid>https://beta.slash-root.fr/docker-configuration-des-reseaux-par-defaut/</guid><description>&lt;img src="https://beta.slash-root.fr/docker-configuration-des-reseaux-par-defaut/cover.png" alt="Featured image of post Docker : Configuration des réseaux par défaut" /&gt;&lt;p&gt;Salut les admins sys et autres dompteurs de conteneurs ! Aujourd'hui, plongeons dans le fascinant (et parfois frustrant) monde des réseaux Docker. Comme on dit dans notre jargon : &amp;quot;Un conteneur sans réseau, c'est comme un pingouin sans banquise - techniquement possible, mais pas vraiment utile.&amp;quot;&lt;/p&gt;
&lt;h2 id="les-réseaux-docker-par-défaut"&gt;&lt;a href="#les-r%c3%a9seaux-docker-par-d%c3%a9faut" class="header-anchor"&gt;&lt;/a&gt;Les réseaux Docker par défaut
&lt;/h2&gt;&lt;p&gt;Docker, cet invité un peu sans-gêne, s'installe et crée directement trois réseaux :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bridge&lt;/code&gt; : Le réseau par défaut où tous vos conteneurs font la fête (172.17.0.0/16)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;host&lt;/code&gt; : Pour quand vos conteneurs veulent se sentir comme à la maison&lt;/li&gt;
&lt;li&gt;&lt;code&gt;none&lt;/code&gt; : Pour les conteneurs asociaux qui préfèrent rester dans leur coin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le réseau &lt;code&gt;bridge&lt;/code&gt; s'approprie allègrement la plage 172.17.0.0/16. Mais que se passe-t-il quand cette plage est déjà occupée par votre infrastructure existante ? Eh bien, c'est un peu comme deux familles qui réservent le même bungalow pour les vacances - ça crée des tensions.&lt;/p&gt;
&lt;h3 id="résolution-des-conflits-avec-le-réseau-par-défaut"&gt;&lt;a href="#r%c3%a9solution-des-conflits-avec-le-r%c3%a9seau-par-d%c3%a9faut" class="header-anchor"&gt;&lt;/a&gt;Résolution des conflits avec le réseau par défaut
&lt;/h3&gt;&lt;p&gt;Pour modifier la plage d'adresses que Docker utilise par défaut, éditez le fichier &lt;code&gt;/etc/docker/daemon.json&lt;/code&gt; (si le fichier n'existe pas, créez-le avec la même joie que lorsque vous créez un nouveau répertoire &lt;code&gt;batman&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;default-address-pools&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 style="color:#f92672"&gt;&amp;#34;base&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;192.168.66.0/24&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;size&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;24&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;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Après cette modification, un petit redémarrage s'impose :&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="incrémentation-automatique-des-réseaux-docker"&gt;&lt;a href="#incr%c3%a9mentation-automatique-des-r%c3%a9seaux-docker" class="header-anchor"&gt;&lt;/a&gt;Incrémentation automatique des réseaux Docker
&lt;/h2&gt;&lt;p&gt;Quand vous créez de nouveaux réseaux Docker avec &lt;code&gt;docker network create&lt;/code&gt;, Docker fait preuve d'une logique implacable pour l'allocation des sous-réseaux. En fonction de votre configuration &lt;code&gt;default-address-pools&lt;/code&gt;, Docker va attribuer automatiquement des plages d'adresses IP qui s'incrémentent à chaque nouveau réseau :&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 network create mon-super-reseau
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour cette commande, Docker utilisera automatiquement la première plage disponible: 192.168.66.0/24&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 network create mon-autre-reseau
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour ce deuxième réseau, Docker passera à la plage suivante: 192.168.67.0/24&lt;/p&gt;
&lt;p&gt;C'est comme distribuer des tranches de gâteau - mais en version IP.&lt;/p&gt;
&lt;p&gt;Si vous préférez choisir votre part vous-même :&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 network create --subnet&lt;span style="color:#f92672"&gt;=&lt;/span&gt;192.168.42.0/24 mon-reseau-avec-le-nombre-de-la-vie
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="les-différents-types-de-réseaux-docker"&gt;&lt;a href="#les-diff%c3%a9rents-types-de-r%c3%a9seaux-docker" class="header-anchor"&gt;&lt;/a&gt;Les différents types de réseaux Docker
&lt;/h2&gt;&lt;h3 id="dans-un-docker-engine-standalone"&gt;&lt;a href="#dans-un-docker-engine-standalone" class="header-anchor"&gt;&lt;/a&gt;Dans un Docker Engine standalone
&lt;/h3&gt;&lt;p&gt;Un Docker Engine standard (non-Swarm) propose plusieurs types de réseaux pour répondre à des besoins distincts :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;bridge&lt;/code&gt; : Le réseau par défaut utilisé par les conteneurs. C'est un réseau virtuel interne qui permet aux conteneurs de communiquer entre eux et avec l'hôte.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;host&lt;/code&gt; : Supprime l'isolation réseau entre le conteneur et l'hôte. Le conteneur utilise directement la pile réseau de l'hôte. Utile pour les performances mais réduit l'isolation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;none&lt;/code&gt; : Désactive complètement le réseau. Le conteneur n'a aucun accès réseau externe. Utile pour les traitements isolés ne nécessitant pas de communication.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;macvlan&lt;/code&gt; : Attribue une adresse MAC physique aux conteneurs, les faisant apparaître comme des périphériques physiques sur le réseau. Idéal pour migrer des applications legacy qui dépendent d'IPs spécifiques.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&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;# Créer un réseau bridge personnalisé (recommandé au lieu du bridge par défaut)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker network create --driver bridge mon-reseau-bridge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="dans-un-cluster-docker-swarm"&gt;&lt;a href="#dans-un-cluster-docker-swarm" class="header-anchor"&gt;&lt;/a&gt;Dans un cluster Docker Swarm
&lt;/h3&gt;&lt;p&gt;Docker Swarm, c'est comme une colocation de conteneurs répartis sur plusieurs serveurs. La communication entre nœuds nécessite des réseaux spéciaux :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;overlay&lt;/code&gt; : Permet aux conteneurs de différents nœuds de communiquer comme s'ils étaient sur le même hôte. Crée un réseau virtual &amp;quot;au-dessus&amp;quot; de l'infrastructure physique.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ingress&lt;/code&gt; : Un réseau overlay spécial qui facilite le routage du trafic entrant vers les services appropriés, indépendamment du nœud qui héberge le conteneur. Gère également l'équilibrage de charge interne.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&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;# Créer un réseau overlay pour les services Swarm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker network create --driver overlay --attachable mon-reseau-multi-hote
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tous ces réseaux peuvent coexister sur le même hote ou cluster, permettant ainsi une architecture réseau flexible et adaptée à chaque cas d'usage.&lt;/p&gt;
&lt;h3 id="le-réseau-ingress-et-la-plage-100008"&gt;&lt;a href="#le-r%c3%a9seau-ingress-et-la-plage-100008" class="header-anchor"&gt;&lt;/a&gt;Le réseau Ingress et la plage 10.0.0.0/8
&lt;/h3&gt;&lt;p&gt;Par défaut, ce cher réseau &lt;code&gt;ingress&lt;/code&gt; s'installe confortablement dans la plage 10.0.0.0/8. Si vous utilisez déjà cette plage, les symptômes sont clairs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker vous lance des erreurs cryptiques avec &amp;quot;network overlap&amp;quot;&lt;/li&gt;
&lt;li&gt;Vos conteneurs deviennent subitement muets&lt;/li&gt;
&lt;li&gt;Vous commencez à douter de vos choix de carrière&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="reconfiguration-du-réseau-ingress"&gt;&lt;a href="#reconfiguration-du-r%c3%a9seau-ingress" class="header-anchor"&gt;&lt;/a&gt;Reconfiguration du réseau Ingress
&lt;/h3&gt;&lt;p&gt;Contrairement à ce qu'on pourrait croire, &lt;strong&gt;pas besoin de quitter le swarm&lt;/strong&gt; pour résoudre ce problème ! Une approche beaucoup plus civilisée consiste à :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Supprimer poliment le réseau ingress existant :&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-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker network rm ingress
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Créer un nouveau réseau ingress avec votre propre plage :&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-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker network create &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --driver overlay &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --ingress &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --subnet&lt;span style="color:#f92672"&gt;=&lt;/span&gt;172.30.0.0/16 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --gateway&lt;span style="color:#f92672"&gt;=&lt;/span&gt;172.30.0.1 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ingress
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voilà qui est beaucoup moins traumatisant pour votre swarm que de tout démolir et reconstruire !&lt;/p&gt;
&lt;h2 id="bonnes-pratiques-pour-la-gestion-des-réseaux-docker"&gt;&lt;a href="#bonnes-pratiques-pour-la-gestion-des-r%c3%a9seaux-docker" class="header-anchor"&gt;&lt;/a&gt;Bonnes pratiques pour la gestion des réseaux Docker
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Planifiez votre allocation d'adresses IP&lt;/strong&gt; : Un schéma bien pensé vaut mieux qu'une nuit blanche de débogage&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Choisissez le bon type de réseau&lt;/strong&gt; : Ne vous limitez pas au &lt;code&gt;bridge&lt;/code&gt; par défaut.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bridge personnalisé&lt;/strong&gt; (&lt;code&gt;docker network create my_bridge&lt;/code&gt;) : Résolution DNS entre conteneurs, isolation, idéal pour les applications sur un seul hôte&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Overlay&lt;/strong&gt; (&lt;code&gt;docker network create -d overlay my_overlay&lt;/code&gt;) : Communication entre hôtes dans Swarm&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Macvlan&lt;/strong&gt; (&lt;code&gt;docker network create -d macvlan --subnet=192.168.40.0/24 --gateway=192.168.40.1 -o parent=eth0 my_macvlan&lt;/code&gt;) : Intégration au réseau physique&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sécurisez votre infrastructure&lt;/strong&gt; : &lt;strong&gt;Évitez d'exposer les ports de base de données&lt;/strong&gt; (comme MySQL, PostgreSQL, MongoDB) sur votre réseau hôte. C'est une faille de sécurité courante et totalement évitable. Dans les réseaux Docker Compose ou Swarm, la communication inter-services se fait nativement via le nom du service. En pratique, votre service d'application peut simplement utiliser &lt;code&gt;db:3306&lt;/code&gt; comme adresse de connexion, sans jamais avoir à publier le port 3306 sur l'interface de l'hôte. Dans Swarm, cette communication fonctionne même entre des conteneurs déployés sur différents nœuds physiques via les réseaux overlay&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Adoptez une nomenclature claire&lt;/strong&gt; : Préférez &lt;code&gt;project_frontend_net&lt;/code&gt; ou &lt;code&gt;prod_db_network&lt;/code&gt; à des noms génériques comme &lt;code&gt;net1&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Documentez votre architecture réseau&lt;/strong&gt; : Votre futur vous (ou votre remplaçant après votre burnout) vous remerciera&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 des réseaux Docker ressemble parfois à un jeu de Tetris avec des blocs CIDR - challenging mais satisfaisant une fois maîtrisé. En comprenant comment Docker assigne et gère les adresses IP, vous pourrez éviter ces moments où, tard dans la nuit, vous fixez votre écran en murmurant &amp;quot;mais pourquoi ça ne communique pas ?&amp;quot;.&lt;/p&gt;
&lt;p&gt;Une bonne configuration réseau vous permettra de dormir tranquille, sachant que vos conteneurs peuvent socialiser entre eux sans créer d'incident diplomatique sur votre infrastructure.&lt;/p&gt;
&lt;p&gt;Et souvenez-vous : dans un monde de conteneurs éphémères, seule une bonne configuration réseau est éternelle (ou du moins, jusqu'au prochain &lt;code&gt;docker-compose down&lt;/code&gt;).&lt;/p&gt;</description></item></channel></rss>