
bratkartoffel/bind9bind9-docker 是一个基于 BIND9 (Berkeley Internet Name Domain) 的 Docker 镜像,提供了轻量级、可移植的 DNS 服务器解决方案。BIND9 是互联网上使用最广泛的 DNS 服务器软件之一,支持 DNSSEC、动态更新、区域传输等高级功能。该镜像旨在简化 BIND9 的部署和管理流程,适用于开发环境、测试环境以及小型生产环境的 DNS 服务需求。
使用默认配置启动 DNS 服务器:
bashdocker run -d --name bind9 -p 53:53/tcp -p 53:53/udp bratkartoffel/bind9
使用外部配置文件启动:
bashdocker run -d --name bind9 \ -p 53:53/tcp -p 53:53/udp \ -v /path/to/named.conf:/etc/bind/named.conf \ -v /path/to/zones:/etc/bind/zones \ bratkartoffel/bind9
| 环境变量 | 默认值 | 描述 |
|---|---|---|
TZ | UTC | 设置时区,例如 Europe/Berlin |
DNS_FORWARDERS | 8.8.8.8; 8.8.4.4 | 上游 DNS 转发器,多个用分号分隔 |
ALLOW_QUERY | any | 允许查询的客户端地址范围 |
LISTEN_ON | any | 监听的网络接口 |
ROOT_HINTS | true | 是否使用根提示文件 |
容器内部主要目录结构:
/etc/bind/: BIND9 配置文件目录
named.conf: 主配置文件named.conf.options: 全局选项配置named.conf.local: 本地区域配置/var/cache/bind/: 缓存和区域文件目录/var/log/bind/: 日志文件目录为确保配置和数据持久化,建议挂载以下目录:
bash-v /host/path/config:/etc/bind -v /host/path/cache:/var/cache/bind -v /host/path/log:/var/log/bind
yamlversion: '3' services: bind9: image: bratkartoffel/bind9 container_name: bind9 restart: always ports: - "53:53/tcp" - "53:53/udp" environment: - TZ=Asia/Shanghai - DNS_FORWARDERS=114.114.114.114; 119.29.29.29 - ALLOW_QUERY=192.168.0.0/24; 10.0.0.0/8 volumes: - ./config:/etc/bind - ./cache:/var/cache/bind - ./log:/var/log/bind networks: - dns-network networks: dns-network: driver: bridge
yamlversion: '3' services: bind9: image: bratkartoffel/bind9 container_name: bind9 restart: always ports: - "53:53/tcp" - "53:53/udp" environment: - TZ=UTC volumes: - ./named.conf:/etc/bind/named.conf - ./zones:/etc/bind/zones - ./cache:/var/cache/bind - ./log:/var/log/bind cap_add: - NET_ADMIN
zones/db.example.com:$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2023010101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) @ IN NS ns1.example.com. ns1 IN A 192.168.1.100 www IN A 192.168.1.101 mail IN A 192.168.1.102
named.conf.local 中添加区域配置:zone "example.com" { type master; file "/etc/bind/zones/db.example.com"; };
bashdocker restart bind9
bashdocker exec -it bind9 tail -f /var/log/bind/query.log
bashdocker exec -it bind9 named-checkconf docker exec -it bind9 named-checkzone example.com /etc/bind/zones/db.example.com
ALLOW_QUERY 范围,避免将 DNS 服务器暴露给公网若启动时提示端口已被占用,检查宿主机是否已有服务占用 53 端口:
bashsudo lsof -i :53
查看容器日志排查配置问题:
bashdocker logs bind9
确保容器网络配置正确,测试 DNS 解析:
bashnslookup example.com <容器IP>


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