Docker部署BIind9 DNS服务器过程

 更新时间:2025年03月28日 11:13:22   作者:学亮编程手记  
这篇文章主要介绍了Docker部署BIind9 DNS服务器过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、环境准备

安装 Docker 环境

  • 确保服务器已安装 Docker 和 Docker Compose(若使用 Compose 方式)。
  • 若离线部署,需提前在有网络的环境中下载镜像 sameersbn/bind 及相关依赖包。

创建持久化存储目录

mkdir -p /opt/docker/bind  # 用于存储配置文件和区域数据

二、部署 BIND DNS 容器

方案一:直接通过 docker run 命令部署

docker run -d --name dns-server \
  --restart=always \
  --publish 53:53/tcp \      # 开放 DNS 服务 TCP/UDP 端口
  --publish 53:53/udp \
  --publish 10000:10000/tcp \  # Webmin 管理界面端口
  --volume /opt/docker/bind:/data \  # 挂载配置目录
  --env ROOT_PASSWORD=your_password \  # 设置 Webmin 登录密码
  --env TZ='Asia/Shanghai' \       # 指定时区
  --env WEBMIN_INIT_SSL_ENABLED=false \  # 可选:禁用 SSL(若通过代理管理)
  sameersbn/bind:9.16.1-20200524

方案二:通过 Docker Compose 部署(推荐)

创建 docker-compose.yml 文件:

version: '3.1'
services:
  dns:
    image: sameersbn/bind:9.16.1-20200524
    container_name: dns-server
    restart: always
    environment:
      TZ: 'Asia/Shanghai'
      ROOT_PASSWORD: your_password  # Webmin 密码
      WEBMIN_ENABLED: 'true'        # 启用 Webmin
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "10000:10000/tcp"
    volumes:
      - ./data:/data                # 数据持久化目录
    networks:
      - dns-network                 # 可选:自定义网络

networks:
  dns-network:
    external: true

启动服务:

docker compose up -d

三、Webmin 管理界面配置

访问 Webmin

  • 浏览器访问 https://<服务器IP>:10000,使用 root 和预设密码登录。
  • 注意:必须使用 HTTPS,否则会提示 SSL 错误。

基础设置

  • 进入 Webmin -> Change Language and Theme,选择中文主题(部分菜单可能仍为英文)。
  • 确认时区设置与容器启动参数一致。

四、配置 DNS 解析规则

创建主区域(正向解析)

  • 进入 服务器 -> BIND DNS 服务器,点击 创建新的主区域
  • 填写域名(如 example.com),主服务器名称设为 localhost,邮箱格式为 admin.example.com

添加 A 记录

  • 在新建的主区域中,选择 地址,输入子域名(如 www)和对应 IP(如 192.168.1.100)。
  • 支持通配符 * 解析所有未定义子域名。

反向解析(可选)

  • 创建反向区域(如 192.168.1.0/24),添加 PTR 记录将 IP 映射回域名。

应用配置

  • 每次修改后点击右上角 应用配置 或重启容器使生效:
docker restart dns-server

五、客户端测试与使用

配置客户端 DNS

修改客户端 DNS 服务器地址为 BIND 容器所在宿主机的 IP。

  • Linux:编辑 /etc/resolv.conf,添加 nameserver 192.168.1.200
  • Windows:在网络适配器设置中指定 DNS 地址。

解析验证

nslookup www.example.com 192.168.1.200  # 指定 DNS 服务器查询
ping www.example.com                    # 验证解析结果

缓存刷新(若需)

  • Windows:ipconfig /flushdns
  • Linux:systemctl restart systemd-resolved

六、注意事项与优化

防火墙与 SELinux

  • 开放端口:53/tcp53/udp10000/tcp
  • 若 SELinux 启用,需调整策略或临时禁用。

转发外部 DNS(可选)

  • 在容器内修改 /data/bind/etc/resolv.conf,添加公共 DNS(如 114.114.114.114)以解析外部域名。
  • 修改 /data/bind/etc/named.conf.options,添加 allow-query { any; }; 允许所有查询。

性能与安全

  • 避免在容器内运行非必要服务(如 Webmin 的监控功能),减少资源占用。
  • 定期备份 /opt/docker/bind 目录防止配置丢失。

常见问题:

  • 端口冲突:若宿主机 53 端口被占用,可改为 -p 5353:53/udp,但需客户端显式指定端口。
  • Webmin 访问异常:确保使用 HTTPS,浏览器忽略证书警告或配置有效证书。
  • 解析延迟:检查 DNS 缓存,或重启容器强制刷新。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker环境下安装jenkins容器的详细教程

    docker环境下安装jenkins容器的详细教程

    这篇文章主要介绍了docker环境下安装jenkins容器的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Docker 教程之获取镜像基础知识详解

    Docker 教程之获取镜像基础知识详解

    这篇文章主要介绍了Docker 教程之获取镜像详解的相关资料,需要的朋友可以参考下
    2016-12-12
  • 浅谈Docker 容器数据卷挂载小结

    浅谈Docker 容器数据卷挂载小结

    本篇文章主要介绍了浅谈Docker 容器数据卷挂载小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Docker使用、容器迁移的方案详解

    Docker使用、容器迁移的方案详解

    Docker 是一个开源的容器化平台,用于打包、部署和运行应用程序及其依赖环境,本文给大家介绍Docker使用、容器迁移的方案,感兴趣的朋友一起看看吧
    2025-04-04
  • docker查看运行容器日志的步骤

    docker查看运行容器日志的步骤

    本文主要介绍了docker查看运行容器日志的步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Docker搭建Skywalking的实现示例

    Docker搭建Skywalking的实现示例

    本文主要介绍了Docker搭建Skywalking的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • 云原生自动化应用于docker仓库私有凭据secret创建

    云原生自动化应用于docker仓库私有凭据secret创建

    这篇文章主要为大家介绍了云原生自动化应用于docker仓库私有凭据secret创建,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • docker报错Container is not running问题及解决

    docker报错Container is not running问题及解决

    这篇文章主要介绍了docker报错Container is not running问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • CentOS8上用Docker部署开源项目Tcloud的教程

    CentOS8上用Docker部署开源项目Tcloud的教程

    这篇文章主要介绍了CentOS8上用Docker部署开源项目Tcloud,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Docker的彻底删除与重新安装完整步骤(ubuntu22.04)

    Docker的彻底删除与重新安装完整步骤(ubuntu22.04)

    Docker是一种轻量级的容器化平台,可以帮助开发人员将应用程序及其依赖项打包成一个可移植的容器,这篇文章主要介绍了Docker的彻底删除与重新安装完整步骤的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2025-03-03

最新评论