需部署支持内网解析与公网转发的私有DNS服务(如CoreDNS),容器通过--dns或自定义网络指向该DNS,配合DNS搜索域提升访问体验。

要在 Docker 中让容器正确解析私有域名(比如 api.internal、db.company.local),同时又能正常访问公网域名(如 google.com),核心不是单纯改容器 DNS 地址,而是搭建一个具备“内部解析 + 外部转发”能力的私有 DNS 服务,并让容器指向它。
部署一个支持转发的私有 DNS 服务(如 BIND9 或 CoreDNS)
推荐使用轻量、配置清晰的 CoreDNS(官方推荐)或 BIND9(成熟稳定),通过 Docker 容器方式运行:
- 用
docker run启动 CoreDNS 容器,挂载自定义Corefile配置文件 -
Corefile中定义两部分:对内网域名(如company.local)做hosts或file插件直解析;对其他域名启用forward插件,转发到上游 DNS(如114.114.114.114或内网 DNS) - 确保该 DNS 容器监听在宿主机可访问的端口(如
53/udp和53/tcp),并开放防火墙
让容器使用该私有 DNS 服务
容器不直接写死内网 IP 域名,而是统一指向你刚搭好的私有 DNS:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 启动容器时加
--dns=192.168.1.100(替换为你的私有 DNS 宿主机 IP) - 若使用自定义 Docker 网络(
docker network create),可在创建网络时指定:docker network create --dns 192.168.1.100 mynet,之后连入该网络的容器自动继承 - 避免混用:不要同时在
/etc/docker/daemon.json全局设 DNS 和容器级--dns,优先级可能冲突
验证解析是否按预期工作
进容器后执行以下命令确认行为:
-
cat /etc/resolv.conf→ 检查 nameserver 是否为你私有 DNS 的 IP -
nslookup api.internal→ 应返回你配置的内网 IP(如10.10.20.5) -
nslookup google.com→ 应能成功返回公网 IP,证明转发链路通畅 - 若失败,检查私有 DNS 容器日志(
docker logs coredns),确认是否收到查询、是否触发了转发
补充:配合 DNS 搜索域提升体验
为减少输入完整域名,可加 --dns-search company.local:
- 这样容器内执行
curl api会自动尝试api.company.local - 与私有 DNS 的
company.local区域配置匹配,实现无缝访问 - 多个搜索域可用逗号分隔,或多次使用
--dns-search

















