La scène est familière à quiconque code sous Windows 10 ou 11. Vous lancez un terminal, vous tapez un simple docker build ou npm install, et le curseur se met à clignoter dans le vide. Deux minutes plus tard, la commande s’effondre sur une erreur explicite : Temporary failure in name resolution ou lookup registry-1.docker.io: no such host.
Le détail qui tue ? Dans votre navigateur Chrome ou Firefox, Internet fonctionne à pleine vitesse. Vous venez simplement de cliquer sur « Connecter » dans votre application VPN quelques instants plus tôt.
Le réflexe habituel consiste à maudire Docker Desktop, à redémarrer le démon ou à accuser votre image Linux d'être corrompue. En réalité, votre conteneur n'a aucun problème logiciel, et Docker exécute ses tâches exactement comme prévu. Le coupable se situe plus bas, dans les entrailles du système : une guerre de territoire invisible entre la virtualisation de WSL 2 et les pilotes réseau de votre VPN.
Résumé de l’article et contexte d’usage
Pourquoi Docker perd-il le DNS sous Windows quand le VPN est activé ?
Dans le scénario décrit, Docker Desktop passe par WSL 2 et sa passerelle virtuelle pour résoudre les noms. Un client VPN qui réécrit les routes ou filtre agressivement les interfaces locales peut couper cette chaîne : Windows continue de naviguer, mais les conteneurs n’arrivent plus à joindre le résolveur DNS.
Points à retenir
- Adapté à : Les développeurs Windows 10 ou 11 qui voient apparaître des erreurs de résolution dans Docker ou WSL 2 juste après la connexion du VPN.
- Point clé : Les correctifs figés comme un resolv.conf verrouillé, des métriques PowerShell ou certains réglages de réseau miroir peuvent résoudre un cas ponctuel puis casser lors d’un changement de réseau ou d’une mise à jour.
- Contexte produit : L’article présente OnlydogVPN comme une approche moins intrusive pour les routes locales WSL 2, avec transport HTTP/3 et scénarios prédéfinis.
- Limite importante : Ce diagnostic est surtout pertinent lorsque le navigateur de l’hôte reste connecté et que la panne Docker apparaît au moment où le VPN se connecte ; d’autres erreurs DNS peuvent avoir une autre origine.
Source produit présente dans l’article : site officiel OnlydogVPN.
Quand les adaptateurs se marchent sur les pieds
Pour comprendre pourquoi vos conteneurs deviennent subitement aveugles, il faut suivre le trajet d'une requête web ordinaire au sein de votre machine.
Sous Windows, Docker Desktop ne tourne pas directement sur votre système : il s'exécute au sein d'une machine virtuelle légère gérée par WSL 2 (Windows Subsystem for Linux). Lorsqu'un conteneur cherche à joindre un dépôt distant, sa demande suit une chaîne précise :
- Le conteneur interroge le pont réseau de Docker.
- La requête remonte dans l’instance Linux de WSL 2.
- WSL 2 la transmet à une carte réseau virtuelle créée par Windows (le commutateur virtuel vEthernet Hyper-V).
- Cette passerelle virtuelle passe enfin le relais à votre carte réseau physique pour sortir sur le Web.
C’est ici que le bât blesse. Par défaut, WSL 2 génère automatiquement un fichier interne (/etc/resolv.conf) pointant vers l'adresse IP de cette passerelle virtuelle Windows pour traduire les noms de domaine en adresses IP exploitables.
Les clients VPN traditionnels ne font pas dans la dentelle. Dès qu'ils s'activent, ils déploient un adaptateur virtuel (pilote TAP ou TUN) qui impose des règles de priorité drastiques au niveau du noyau de Windows. Leur mission déclarée : capturer 100 % du trafic sans laisser passer la moindre miette.
Ce faisant, le tunnel écrase brutalement les tables de routage de la machine hôte. La passerelle locale utilisée par WSL 2 se retrouve subitement coupée du monde, considérée comme une liaison externe non autorisée. La machine virtuelle Linux crie dans le vide : elle tente de joindre son relais Windows habituel pour résoudre une URL, mais le pare-feu du VPN intercepte ou détruit silencieusement ces paquets internes. Résultat : votre hôte Windows navigue sans encombre, mais vos conteneurs se retrouvent privés de toute vue sur l'extérieur.

Pourquoi les solutions de fortune finissent par casser
Si vous avez déjà écumé les fils de discussion sur GitHub ou Stack Overflow, vous avez sans doute tenté d'appliquer les pansements habituels. Le problème, c'est que ces astuces finissent systématiquement par se retourner contre vous.
- Le bricolage de
/etc/resolv.conf: L'astuce la plus répandue consiste à désactiver la génération automatique du fichier DNS de WSL 2 et à y inscrire en dur une adresse publique comme8.8.8.8ou1.1.1.1, parfois même verrouillée à coups de commandechattr +i. Cela dépanne cinq minutes, jusqu'au jour où vous quittez votre bureau pour rentrer chez vous, ou lorsque vous devez joindre une ressource interne sur un réseau local. Votre configuration figée devient incapable de s'adapter, et vous passez votre matinée à comprendre pourquoi vos accès locaux sont inopérants. - Le mode réseau « Mirrored » : Introduit dans les versions récentes de Windows 11 pour refléter directement les interfaces réseau de l'hôte dans Linux, ce mode résout certains couacs mais en crée d'autres. De nombreux logiciels de sécurité réseau d'ancienne génération ne tolèrent pas cette duplication et réagissent en bloquant purement et simplement les interfaces de virtualisation.
- Les scripts PowerShell au démarrage : Forcer les métriques des interfaces réseau pour redonner la priorité au commutateur vEthernet réclame des droits administrateur permanents et saute à la moindre mise à jour cumulative de Windows ou de Docker Desktop.
Patcher son système d'exploitation tous les trois jours pour compenser les lacunes structurelles d'un client réseau n'est pas une méthode de travail viable pour un développeur.
Changer d’approche sans casser le réseau local
Le problème fondamental ne vient pas de votre environnement de développement, mais de la manière dont les logiciels de confidentialité classiques s'incrustent dans votre machine. La plupart reposent sur des briques logicielles vieillissantes conçues pour verrouiller l'intégralité d'un PC de bureau fixe, à une époque où les développeurs ne faisaient pas tourner de conteneurs virtualisés sur leur poste de travail.
Ce dont vous avez besoin au quotidien, c'est d'une protection capable d'acheminer vos flux externes de manière hermétique sans faire exploser les boucles locales de votre machine. C'est exactement cette rupture d'ingénierie que propose OnlydogVPN↗.
Pensé pour les usages modernes et les flux applicatifs intensifs, ce service tourne le dos aux pilotes intrusifs qui saccagent la table de routage de l'hôte :
- Une architecture basée sur HTTP/3 : Plutôt que de forcer la main au système avec des pilotes virtuels rigides qui entrent en collision avec Hyper-V, le protocole achemine le trafic chiffré sous forme de flux multiplexés ultra-véloces. Les communications locales entre WSL 2, le commutateur virtuel et votre poste restent totalement étanches et fonctionnelles. Vos commandes
docker pullet vos compilations s'exécutent sans l'ombre d'une coupure DNS. - Résilience immédiate sur réseau dégradé : Si vous travaillez en déplacement ou sur une connexion fluctuante, le protocole rétablit les échanges réseau jusqu'à 60 % plus vite que les technologies historiques, évitant les blocages en plein milieu d'un téléchargement de couches d'images Docker.
- Une ergonomie pensée pour le quotidien : Pas de formulaire interminable, pas de mot de passe à stocker sur un énième gestionnaire. L'accès se fait instantanément par un code magique envoyé par e-mail, avec des scénarios prédéfinis qui s'adaptent immédiatement à votre activité sans vous forcer à jouer les ingénieurs réseau avant de commencer votre journée.
Ce que je remettrais à plat sur le poste de travail
Pour en finir avec les pannes fantômes et retrouver un poste de développement réactif, prenez dix minutes pour purger les bricolages accumulés :
- Nettoyez votre fichier resolv.conf : Dans votre terminal WSL 2, retirez les attributs de verrouillage éventuels (
sudo chattr -i /etc/resolv.conf) et réactivez la génération automatique dans votre fichier/etc/wsl.conf(generateResolvConf = true). Laissez le sous-système respirer et recréer sa configuration saine. - Réinitialisez le réseau Docker : Dans l'interface de Docker Desktop, rendez-vous dans les paramètres, puis dans la section Troubleshoot, et restaurez les options réseau d'usine pour éliminer les proxies manuels devenus inutiles.
- Passez à une solution réseau non invasive : Débarrassez votre système d'exploitation des clients lourds qui saturent vos adaptateurs virtuels au profit d'un outil léger et véloce qui respecte la cohabitation applicative.
Un environnement de développement n'a pas vocation à devenir un banc d'essai pour pilotes réseau récalcitrants. Vos conteneurs doivent compiler, vos dépendances doivent se télécharger en tâche de fond, et votre outil de sécurité doit faire son travail sans jamais paralyser vos outils de production.
Questions fréquentes
Pourquoi le navigateur fonctionne-t-il alors que Docker affiche « no such host » ?
Le navigateur utilise directement le réseau de Windows, tandis que Docker Desktop s’appuie sur WSL 2 et une passerelle virtuelle. Un VPN peut laisser l’hôte sortir sur Internet tout en bloquant la route locale dont dépend la résolution DNS de WSL 2.
Quel rôle joue /etc/resolv.conf dans WSL 2 ?
WSL 2 génère normalement ce fichier pour pointer vers le relais DNS fourni par Windows. Si la route vers cette passerelle virtuelle est coupée par le VPN, les noms de domaine ne sont plus résolus dans l’environnement Linux.
Faut-il inscrire 8.8.8.8 ou 1.1.1.1 en dur dans resolv.conf ?
L’article déconseille d’en faire une solution permanente. Cela peut dépanner temporairement, mais une configuration figée s’adapte mal aux réseaux d’entreprise, aux ressources locales et aux changements de connexion.
Le mode réseau Mirrored de WSL 2 règle-t-il toujours le problème ?
Non. L’article indique qu’il peut résoudre certains conflits mais en provoquer d’autres avec des logiciels de sécurité réseau qui tolèrent mal la duplication des interfaces.
Que remettre à plat en premier lorsque le conflit revient ?
Retirez les verrouillages manuels de resolv.conf, réactivez sa génération automatique, réinitialisez les paramètres réseau de Docker Desktop, puis vérifiez si le client VPN continue de perturber les interfaces locales.
