4km3/dnsmasq 是一个基于 Alpine Linux 的轻量级 dnsmasq 容器镜像。dnsmasq 是一款集 DNS 缓存、DNS 转发、DHCP 服务器、TFTP 服务器于一体的轻量级网络服务工具,广泛用于小型网络环境。该镜像结合 Alpine Linux 的精简特性,实现了低资源占用、快速启动和易于部署的网络服务容器,适用于需要轻量级 DNS/DHCP 服务的场景。
| 功能/特性 | 说明 |
|---|---|
| DNS 服务 | 支持 UDP/TCP 53 端口,提供 DNS 缓存、转发、自定义域名解析(hosts 映射)。 |
| DHCP 服务 | 支持 IPv4 DHCP 地址池配置、租期管理、静态 IP 绑定(MAC-IP 映射)。 |
| 轻量级基础 | 基于 Alpine Linux,镜像体积 < 10MB,运行时内存占用通常 < 5MB。 |
| 灵活配置 | 支持通过配置文件(dnsmasq.conf)或命令行参数自定义服务行为。 |
| 网络兼容性 | 支持 Docker 桥接网络、host 网络等模式,适配不同网络场景。 |
bashdocker run -d \ --name dnsmasq \ --restart unless-stopped \ -p 53:53/udp \ # DNS 服务端口(UDP) -p 53:53/tcp \ # DNS 服务端口(TCP,用于长查询) -v /path/to/dnsmasq.conf:/etc/dnsmasq.conf \ # 挂载自定义配置文件 -v /path/to/hosts:/etc/hosts \ # 可选:挂载自定义 hosts 文件(静态域名映射) 4km3/dnsmasq
DHCP 服务依赖底层网络栈,建议使用 --net=host 模式以确保正确广播和地址分配:
bashdocker run -d \ --name dnsmasq \ --restart unless-stopped \ --net=host \ # 使用主机网络,避免端口映射冲突 --cap-add=NET_ADMIN \ # 授予网络管理权限(DHCP 服务必需) -v /path/to/dnsmasq.conf:/etc/dnsmasq.conf \ -v /path/to/dhcp-hosts:/etc/dnsmasq.d/dhcp-hosts \ # 静态 IP 绑定配置 4km3/dnsmasq
创建 docker-compose.yml:
yamlversion: '3' services: dnsmasq: image: 4km3/dnsmasq container_name: dnsmasq restart: unless-stopped network_mode: host # 如需 DHCP 服务,建议使用 host 网络 cap_add: - NET_ADMIN # DHCP 服务必需 volumes: - ./dnsmasq.conf:/etc/dnsmasq.conf:ro # 只读挂载配置文件 - ./dnsmasq.d:/etc/dnsmasq.d:ro # 可选:额外配置片段目录 - ./hosts:/etc/hosts:ro # 可选:自定义 hosts 文件 # 如需仅启用 DNS 服务(非 host 网络),替换 network_mode 和 ports: # ports: # - "53:53/udp" # - "53:53/tcp"
dnsmasq 的核心配置通过 /etc/dnsmasq.conf 文件定义,用户需通过数据卷挂载自定义配置文件。默认情况下,镜像可能包含基础配置(如默认 DNS 转发至公共 DNS),但建议用户根据需求自定义。
/etc/dnsmasq.conf(容器内路径,需通过 -v 挂载宿主机文件)/etc/dnsmasq.d/(容器内目录,可挂载宿主机目录并存放 .conf 后缀文件,自动加载)以下为 dnsmasq.conf 关键配置项示例,更多参数参考 dnsmasq ***文档:
conf# 禁用 resolv.conf 自动加载(避免容器内 DNS 干扰) no-resolv # 上游 DNS 服务器(按优先级排序) server=8.8.8.8 # Google DNS server=8.8.4.4 # DNS 缓存大小(最多缓存 1000 条记录) cache-size=1000 # 自定义域名解析(等价于 hosts 文件) address=/local.dev/192.168.1.100 # 将 local.dev 解析到 192.168.1.100
conf# 启用 DHCP 服务 dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,12h # IP 范围、子网掩码、租期 dhcp-option=3,192.168.1.1 # 网关地址 dhcp-option=6,8.8.8.8,8.8.4.4 # DNS 服务器地址(分配给客户端) # 静态 IP 绑定(MAC 地址 -> IP) dhcp-host=aa:bb:cc:dd:ee:ff,192.168.1.50,my-device # MAC 为 aa:bb:cc:... 的设备固定分配 192.168.1.50,主机名 my-device
conf# 启用 TFTP 服务 enable-tftp tftp-root=/tftpboot # TFTP 根目录(需挂载宿主机目录至容器 /tftpboot)
--net=host 模式;仅需 DNS 服务时可使用桥接网络并映射 53 端口。NET_ADMIN 权限(--cap-add=NET_ADMIN),否则无法监听 DHCP 端口(67/udp)。root)有读取权限,建议宿主机文件权限设为 644。docker logs dnsmasq 查看;如需持久化日志,可配置 log-facility=/var/log/dnsmasq.log 并挂载日志目录。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429