
dockurr/dnsmasqdockurr/dnsmasq 是开源DNS服务器 dnsmasq 的Docker容器化版本。该镜像提供了便捷部署的轻量级DNS服务,可用于本地网络的DNS解析、缓存及相关网络服务。
yamlservices: dnsmasq: image: dockurr/dnsmasq container_name: dnsmasq environment: DNS1: "1.0.0.1" # 上游DNS服务器1 DNS2: "1.1.1.1" # 上游DNS服务器2 ports: - 53:53/udp # DNS UDP端口 - 53:53/tcp # DNS TCP端口 cap_add: - NET_ADMIN # 需添加网络管理权限 restart: always # 自动重启策略
bashdocker run -it --rm --name dnsmasq \ -p 53:53/udp \ -p 53:53/tcp \ -e "DNS1=1.0.0.1" \ -e "DNS2=1.1.1.1" \ --cap-add=NET_ADMIN \ dockurr/dnsmasq
| 环境变量 | 说明 | 默认值 |
|---|---|---|
DNS1 | 主要上游DNS服务器地址 | - |
DNS2 | 备用上游DNS服务器地址 | - |
示例:使用Cloudflare公共DNS服务器
yamlenvironment: DNS1: "1.0.0.1" DNS2: "1.1.1.1"
通过挂载包含 *.conf 文件的目录,可扩展默认配置:
yamlvolumes: - ./dnsmasq.d/:/etc/dnsmasq.d/ # 本地目录挂载到容器配置目录
容器会自动加载该目录下所有 .conf 格式的配置文件。
如需完全自定义dnsmasq配置,可直接挂载自定义的 dnsmasq.conf 文件:
yamlvolumes: - ./dnsmasq.conf:/etc/dnsmasq.conf # 本地配置文件覆盖容器默认配置
若主机上已有进程占用53端口,会出现类似以下错误:
Error response from daemon: driver failed programming external connectivity on endpoint dnsmasq (...): Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use
解决步骤:
检查占用53端口的进程:
bashnetstat -lnpt | grep -E ':53 +'
示例输出:
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 197/systemd-resolve
针对systemd系统(如Ubuntu),可指定绑定特定IP地址:
yamlports: - "192.168.1.100:53:53/udp" # 替换为实际IP - "192.168.1.100:53:53/tcp"
其他情况需根据占用进程类型处理,可能需要禁用或卸载冲突的DNS服务(如bind、systemd-resolved等)。




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务