Docker容器DNS配置有四种方式:一是启动时用--dns指定,优先级最高;二是修改daemon.json全局配置;三是自定义网络启用内嵌DNS实现服务发现;四是Compose中声明DNS字段。

Docker容器默认使用宿主机的DNS配置,但很多场景下需要自定义DNS服务器来解决内网域名解析、私有服务发现或绕过公网DNS限制等问题。配置方式取决于你的网络模型和需求复杂度,核心思路是让容器的/etc/resolv.conf中写入你指定的nameserver。
直接启动时指定DNS(最常用)
适用于单次运行或CI/CD临时调试。使用`--dns`参数传入一个或多个DNS服务器地址:docker run --dns 114.114.114.114 --dns 8.8.8.8 -it alpine nslookup baidu.com
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
为整个Docker守护进程统一配置
适合所有容器默认走特定DNS(比如公司内网DNS)。修改`/etc/docker/daemon.json`:{ "dns": ["192.168.1.1", "114.114.114.114"], "dns-search": ["corp.local"], "dns-opts": ["ndots:2"] }
保存后重启Docker服务(sudo systemctl restart docker)。此后新建容器都会自动继承这些设置,且仍可被单个容器的`--dns`覆盖。在用户自定义网络中启用内嵌DNS(推荐用于服务发现)
当你用`docker network create mynet`创建自定义网络时,Docker会自动启用内嵌DNS服务器(固定地址`127.0.0.11`),它能解析同网络内容器的名称和`--network-alias`别名:docker network create mynet
docker run -d --name web --network mynet nginx
docker run -it --network mynet --rm alpine nslookup web
Docker Compose中声明DNS(适合编排环境)
在`docker-compose.yml`的服务层级添加`dns`、`dns_search`或`dns_opt`字段:services:
app:
image: ubuntu
dns:
- 192.168.10.50
- 8.8.8.8
dns_search:
- internal.example.com
dns_opt:
- timeout:2
不复杂但容易忽略

















