--dns参数是最常用可靠的容器DNS配置方式,启动时直接写入/etc/resolv.conf并覆盖其他配置,支持IPv4/IPv6地址且按顺序设定优先级;但在自定义网络中会被忽略,需改用网络层级配置或配合--dns-search提升短域名解析体验。
直接用 --dns 参数是最常用、最可靠的容器 dns 配置方式,它会在容器启动时把指定的 dns 服务器写入 /etc/resolv.conf,完全覆盖其他来源的配置。
基本用法:单个或多个 DNS 地址
支持 IPv4 和 IPv6 地址,不接受域名。多个 --dns 按顺序写入,优先级从前到后:
-
docker run --dns 114.114.114.114 nginx(只用一个) -
docker run --dns 192.168.1.100 --dns 8.8.8.8 --dns 1.1.1.1 nginx(主备三级)
配合常用参数一起使用
该参数可与其他选项共存,不影响端口映射、后台运行、挂载等操作:
docker run -d -p 8080:80 --dns 192.168.1.100 nginxdocker run -it --rm -v $(pwd):/data --dns 223.5.5.5 alpine nslookup example.com
注意自定义网络下的限制
如果容器连接的是 Docker 自定义网络(比如 docker network create mynet 或 docker-compose 默认网络),--dns 参数会被忽略 —— 因为这类网络强制走内置 DNS 127.0.0.11。此时需改用网络层级配置:
- 创建网络时指定:
docker network create --dns 192.168.1.100 mynet - 或在
docker-compose.yml的 network 配置块中设置driver_opts或全局dns
补充:加搜索域提升解析体验
搭配 --dns-search 可自动补全短域名,适合内网环境:
docker run --dns 192.168.1.100 --dns-search corp.local alpine ping api- 实际解析目标是
api.corp.local,无需输全称


















