WSL2执行docker build时Windows主机DNS丢失问题求助
解决方案:Docker Build引发Windows DNS故障问题
临时应急操作
- 手动重置Windows DNS缓存:以管理员身份打开命令提示符,执行
ipconfig /flushdns,再重启DNS服务:net stop dnscache && net start dnscache,能跳过等待期快速恢复DNS功能。 - 切换网络适配器:比如从WiFi切到有线网络再切回,部分场景下可临时修复解析异常。
针对性修复方案
1. 调整Docker网络配置,避免子网冲突
在WSL2中编辑/etc/docker/daemon.json,添加或修改以下内容:
{ "dns": ["8.8.8.8", "8.8.4.4"], "bip": "192.168.100.1/24", "default-address-pools": [ {"base": "192.168.200.0/24", "size": 24} ] }
保存后重启Docker服务:sudo systemctl restart docker
说明:指定独立的Docker子网,避免与Windows或WSL2默认子网重叠,减少网络驱动层面的冲突
2. 修改WSL2网络模式
在Windows用户目录(C:\Users\<你的用户名>)下创建或编辑.wslconfig文件,添加:
[wsl2] networkingMode=mirrored dnsTunneling=false useWindowsDnsCache=false
执行wsl --shutdown重启WSL2后再测试。
说明:mirrored模式让WSL2共享Windows网络栈,减少独立网络带来的驱动冲突;关闭dnsTunneling避免DNS请求被异常拦截
3. 禁用网络驱动的校验和卸载功能
打开设备管理器,找到当前使用的网络适配器(如WiFi适配器),右键选择「属性」→「高级」标签页:
- 找到「IPv4 Checksum Offload」或「TCP Checksum Offload」选项,设置为禁用
- 重启电脑后验证效果
说明:部分驱动的校验和卸载功能会与WSL2/Docker的网络交互冲突,禁用后可缓解DNS解析异常
4. 降级Docker版本
尝试降级到Docker Engine 23.x版本,部分用户反馈新版本的WSL2集成存在网络驱动兼容性问题,降级后故障消失。
验证方式
每次修改配置后,执行docker build构建镜像,同时在Windows命令提示符中用nslookup github.com测试DNS解析,观察是否仍出现失败情况。
内容的提问来源于stack exchange,提问作者fchastanet
相关产品推荐
相关产品推荐

