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

如何在不修改宿主机hosts前提下解决Docker自定义网络FQDN解析错误问题

根本原因

Docker用户自定义网络默认使用嵌入式DNS服务器,该服务器会优先读取宿主机/etc/hosts中的条目返回给容器,导致example.com被解析为错误的回环地址。

可行解决方案
  • 方案1:启动容器时显式指定FQDN映射(单次生效,灵活度最高)
    启动容器时添加--add-host参数,手动将目标FQDN绑定到正确IP:
# 绑定到公网IP场景
docker run -it --network='test' --add-host example.com:<你的公网解析IP> debian:10

# 绑定到宿主机网桥IP(用于容器访问宿主机服务场景,Docker 20.10+支持)
docker run -it --network='test' --add-host example.com:host-gateway debian:10

该配置会直接写入容器/etc/hosts,优先级高于DNS查询,可直接覆盖错误解析结果。

  • 方案2:指定容器使用公共DNS服务器
    启动容器时添加--dns参数,指定公共DNS替代默认的嵌入式DNS上游,绕过宿主机/etc/hosts的读取逻辑:
docker run -it --network='test' --dns 8.8.8.8 --dns 114.114.114.114 debian:10

修改后容器查询example.com会直接向指定公共DNS发起请求,得到公网解析结果。

  • 方案3:全局配置Docker daemon规则(所有容器生效)
    编辑宿主机/etc/docker/daemon.json文件,添加全局DNS配置:
{
  "dns": ["8.8.8.8", "114.114.114.114"]
}

保存后重启Docker服务生效:

systemctl restart docker

之后所有启动的容器默认会使用配置的公共DNS,无需单独添加启动参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:54:09