WSL2中Docker容器无法继承本地DHCP分配的DNS后缀导致脚本执行异常的问题排查与解决咨询
WSL2中Docker容器无法继承本地DHCP分配的DNS后缀导致脚本执行异常的问题排查与解决咨询
我目前在Windows上运行Debian的Docker镜像,遇到了一个DNS相关的问题,想请教大家怎么解决:
环境信息
- Windows版本:10.0.19045.4651
- WSL版本:2.2.4
- WSL分发版:docker-desktop-data
- Docker Engine版本:27.1.1
- Debian容器版本:12
问题现象
容器的DNS是从Docker获取的172.x.x.7,这个Docker DNS本身是正常工作的——不管是ping google.com还是本地内网服务都能正常解析。
但麻烦的是,WSL里的Docker没有继承我本地通过DHCP分配的DNS域名后缀,这直接导致原本在生产服务器上能正常运行的脚本失效了。举两个对比例子:
- 生产环境(Linux/Docker):执行
mount -t nfs myserver:/myshare /mnt/myshare就能成功挂载NFS共享 - WSL2/Docker环境:必须写成
mount -t nfs myserver.mydomain:/myshare /mnt/myshare才能正常完成挂载
我的疑问与已知线索
我想搞清楚:为什么WSL2下的Docker会出现这种不继承DHCP域名后缀的情况?除了修改脚本里的地址写法之外,有没有更合适的解决办法?
另外我查了一下,发现Docker引擎有个配置文件config.json,里面有个dns-search选项是官方文档提到的,这个可以配置静态的域名后缀,但这和Linux系统通过DHCP自动获取的连接特定域名后缀不是一回事,后者是动态分配的,静态配置的灵活性不够...
备注:内容来源于stack exchange,提问作者user165568
相关产品推荐
相关产品推荐

