
基于Alpine和Debian slim的Bind缓存DNS服务器,支持DNS转发器、无限通配符DNS、无限额外主机、反向DNS、DNSSEC定时设置等功能。
amd64, i386, arm64, arm/v7, arm/v6, ppc64le, s390x, mips64le
每晚构建更新,以下标签为滚动版本:
| Docker标签 | Git分支 | 支持架构 |
|---|---|---|
latest | master | amd64, i386, arm64, arm/v7, arm/v6, ppc64le, s390x, mips64le |
stable | master | amd64, i386, arm64, arm/v7, arm/v6, ppc64le, s390x, mips64le |
alpine | master | amd64, i386, arm64, arm/v7, arm/v6, ppc64le, s390x, mips64le |
一次性构建,用于可重现部署,需定期更新标签以保持最新:
| Docker标签 | Git引用 | 支持架构 |
|---|---|---|
<tag> | git: | amd64, i386, arm64, arm/v7, arm/v6, ppc64le, s390x, mips64le |
<tag>-stable | git: | amd64, i386, arm64, arm/v7, arm/v6, ppc64le, s390x, mips64le |
<tag>-alpine | git: | amd64, i386, arm64, arm/v7, arm/v6, ppc64le, s390x, mips64le |
注:
<tag>需替换为仓库的git标签。最新git标签也会每晚构建,视为滚动标签。
无
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
DEBUG | bool | 0 | 设置为1可在入口脚本中添加set -x进行bash调试 |
DEBUG_ENTRYPOINT | bool | 0 | 显示启动时执行的shell命令。值:0(仅警告/错误)、1(信息/警告/错误)、2(含执行命令) |
DOCKER_LOGS | bool | 0 | 设置为1可将信息和查询记录到Docker日志 |
DNS_A | string | 逗号分隔的A记录列表(支持通配符) | |
DNS_CNAME | string | 逗号分隔的CNAME记录列表(支持通配符) | |
DNS_PTR | string | 逗号分隔的PTR记录列表(反向DNS) | |
DNSSEC_VALIDATE | string | no | DNSSEC验证行为:no(默认,不验证)、yes(需手动配置信任锚)、auto(使用根区默认信任锚) |
DNS_FORWARDER | string | 逗号分隔的自定义DNS解析器IP列表,如8.8.8.8,8.8.4.4 | |
MAX_CACHE_SIZE | size | 90% | 服务器缓存内存用量,支持相对值(如30%)或绝对值(如512M、2G) |
TTL_TIME | int | 3600 | TTL时间(秒),详见BIND TTL |
REFRESH_TIME | int | 1200 | SOA刷新时间(秒),详见BIND SOA |
RETRY_TIME | int | 180 | SOA重试时间(秒),详见BIND SOA |
EXPIRY_TIME | int | 1209600 | SOA过期时间(秒),详见BIND SOA |
MAX_CACHE_TIME | int | 10800 | 最大缓存时间(秒),详见BIND SOA |
ALLOW_QUERY | string | 允许查询的IP/IP段(CIDR)列表,如192.168.1.0/24,127.0.0.1,默认允许所有(any) | |
ALLOW_RECURSION | string | 允许递归查询的IP/IP段(CIDR)列表,如192.168.1.0/24,127.0.0.1 |
DNS_A
指定A记录(支持通配符),格式:DNS_A='tld1=1.1.1.1, *.tld2=2.2.2.2'
示例:DNS_A='*.example.com=192.168.0.1, *.org=10.0.0.2'
DNS_CNAME
指定CNAME记录(支持通配符),格式:DNS_CNAME='tld1=google.com, *.tld2=example.org'
示例:DNS_CNAME='*.tld=example.org'(将所有*.tld解析为example.org的IP)
DNS_PTR
指定反向DNS记录,格式:DNS_PTR='IP=域名'
示例:DNS_PTR='192.168.0.1=host.loc, 10.0.0.2=server.example.com'
DNS_FORWARDER
指定外部DNS转发器,格式:DNS_FORWARDER='IP1,IP2'
示例:DNS_FORWARDER='8.8.8.8,192.168.0.10'(Google DNS和局域网DNS)
无
| 端口 | 描述 |
|---|---|
| 53/tcp | DNS解析器 |
| 53/udp | DNS解析器 |
以下示例使用-i以交互模式运行,生产环境建议使用-d后台运行。
bashdocker run -i \ -p 53:53/tcp \ -p 53:53/udp \ -t cytopia/bind
将所有*.example.com子域名解析到192.168.0.1:
bashdocker run -i \ -p 53:53/tcp \ -p 53:53/udp \ -e DNS_A='*.example.com=192.168.0.1' \ -t cytopia/bind
将*.loc及loc本身解析到192.168.0.4,并添加反向DNS:
bashdocker run -i \ -p 53:53/tcp \ -p 53:53/udp \ -e DNS_A='*.loc=192.168.0.4, loc=192.168.0.4' \ -e DNS_PTR='192.168.0.4=host.loc' \ -t cytopia/bind
将*.loc解析到192.168.0.1,并使用企业DNS服务器10.0.15.1和10.0.15.2:
bashdocker run -i \ -p 53:53/tcp \ -p 53:53/udp \ -e DNS_A='*.loc=192.168.0.1' \ -e DNS_FORWARDER=10.0.15.1,10.0.15.2 \ -t cytopia/bind
允许192.168.0.0/24和本地主机查询及递归,使用Google DNS:
bashdocker run -i \ -p 53:53/tcp \ -p 53:53/udp \ -e DNS_A='host1=192.168.0.11' \ -e DNS_FORWARDER=8.8.8.8,8.8.4.4 \ -e ALLOW_QUERY=192.168.0.0/24,127.0.0.1 \ -e ALLOW_RECURSION=192.168.0.0/24,127.0.0.1 \ -t cytopia/bind
修改/etc/dhcp/dhclient.conf,添加:
bashprepend domain-name-servers 127.0.0.1;
重启网络管理器:
bashsudo systemctl restart network-manager
此配置将本地DNS设为首选,不影响DHCP提供的其他DNS服务器。
MIT许可证,详见LICENSE。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务