You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VirtualBox中Linux虚拟机内Docker容器无法解析域名求助

解决Docker Alpine容器无法解析域名的问题

我之前碰到过完全一样的情况!核心问题出在Docker容器的DNS配置和VirtualBox NAT网络的转发规则不兼容上,咱们一步步来解决:

问题根源

你的Linux虚拟机应该用的是VirtualBox的NAT网络模式吧?虚拟机里/etc/resolv.conf配置的127.0.1.1其实是VirtualBox内置的DNS转发服务,它会把DNS请求转发到宿主机(你的Windows电脑)的DNS服务器。而Alpine容器里直接配置的8.8.8.8和8.8.4.4,因为VirtualBox的NAT限制,容器没办法直接访问外部公共DNS服务器,所以才会出现能ping通IP但解析不了域名的情况。

快速验证方案

启动容器时手动指定使用虚拟机的DNS服务器,先验证是否能解决问题:

docker run -it --dns 127.0.1.1 alpine

进入容器后再尝试ping google.com或者nslookup google.com,应该就能正常解析了。

全局解决方案(一劳永逸)

如果不想每次启动容器都加参数,可以修改Docker daemon的默认DNS配置,让所有容器自动使用兼容的DNS:

  1. 在Linux虚拟机里创建或编辑/etc/docker/daemon.json文件:
{
  "dns": ["127.0.1.1", "8.8.8.8"]
}

这里把虚拟机的DNS放在前面作为首选,8.8.8.8作为备用选项。
2. 重启Docker服务让配置生效:

systemctl restart docker

之后再启动Alpine容器,默认就会用这个兼容的DNS配置,不用再额外加参数。

额外检查项

  • 确认VirtualBox虚拟机的网络设置:打开虚拟机设置→网络→高级,查看DNS服务器选项,确保它是自动获取或者和虚拟机/etc/resolv.conf里的地址一致。
  • 如果容器里没有nslookup命令,先安装工具包:apk add bind-tools(不过你已经能执行nslookup,这步可以跳过)

内容的提问来源于stack exchange,提问作者user1576177

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:30:32