使用 Docker Compose 部署 DNS 服务 docker-bind 的经验分享

前言

前面使用 nginx 代理转发了几个域名到服务器,但是每次添加一个域名都需要在客户端添加一行 hosts 文件,无疑是繁琐的,其中也提到可以使用 DNS 来实现自动解析域名 到指定服务器的功能,本篇将介绍开源 DNS 服务 docker-bind 的部署和使用

特点

  • docker-bind 是一个基于 BIND 与 Webmin 构建的 DNS 服务镜像
  • BIND 是实现互联网域名系统 (DNS) 协议的开源软件,用于搭建 DNS 服务。
  • Webmin 是一款开源的Web界面管理工具,用于浏览器远程管理服务器
  • 开源免费, 配置丰富(复杂),成熟稳定,中文主题支持有限,提供了一些服务器管理功能(监控,远程命令等),资源占用和安全性在使用时需要注意

使用情况

  • 功能多但是大多有其他的平替,单独使用可以,但是个人不建议在容器中使用
  • 用了两天感觉还是太重了,换成 DnsServer 了,下篇分享

docker-bind 的安装使用

准备

  • 版本:v9.16.1-20200524
  • docker 镜像:sameersbn/bind:9.16.1-20200524
  • 默认端口映射:53:53/tcp 53:53/udp 10000:10000/tcp(53 端口为 DNS 服务使用,10000 为 Webmin 使用)
  • Webmin 访问:https://ip:10000 必须使用 https 访问

使用 Docker Compose 安装

本篇文章基于 Docker V24 及 Docker Compose V2,安装可以参考之前的文章

配置说明
  • 镜像版本:sameersbn/bind:9.16.1-20200524
  • 指定时区:Asia/Shanghai
  • 启用 Webmin 并指定 root 密码:devops666
  • 启用 SSL:默认值为 true,用 https 访问 webmin(https://ip:10000)
  • 指定端口映射:53:53/tcp 53:53/udp 10000:10000/tcp(53 端口为 DNS 服务使用,10000 为 Webmin 端口)
  • 挂载数据目录:./data:/data
  • 指定网络:devopsnetwork (docker network create devopsnetwork
配置文件 compose.yml
  • 准备好 compose.yml 拷贝到服务器
  • 然后运行docker compose up -d即可
version: '3.1'
services:
  dns:
    image: sameersbn/bind:9.16.1-20200524
    container_name: dns_9_16
    restart: always
    environment:
      TZ : 'Asia/Shanghai'
      ROOT_PASSWORD: devops666
      WEBMIN_ENABLED: true      
      WEBMIN_INIT_SSL_ENABLED: true
    ports:
        - '10000:10000/tcp'
        - '53:53/udp'
        - '53:53/tcp'
    volumes:
      - ./data:/data
    networks:
      - devopsnetwork

networks:
  devopsnetwork:
    external: true
部署成功

部署机器 IP:192.168.123.214

容器中资源占用情况

Webmin 的使用

  • 部署成功后访问:https://192.168.123.214:10000 默认启用了 SSL,使用 https://ip:prot

  • 启用中文主题, 虽然支持有限,但聊胜于无

  • 有非常多的功能,监控,远程执行命令等,安装好自行体验即可

  • 目前需求是需要配置 dns 以将 test.com 解析到 192.168.123.214 中

  1. 服务器->BIND DNS Server->创建新的主区域

  2. 现有DNS区域->地址->新增记录,可以使用通配符解析,新建后应用配置生效


      添加配置后记得应用配置

  3. 本机设置 dns 192.168.123.214 以及 114.114.114.114(不然无法访问其他网站)

  4. 验证dns,正常ping test.com 的IP是存在的,现在就被解析到我们自己的dns了


      可能存在dns缓存,使用 ipconfig /flushdns刷新即可

踩过的坑

  • 默认启用了 SSL,所以如果使用 http 会提示,使用 https 访问

  • Edge 如果禁用 https 初始化会提示:Error - No cookies Chrome 可以

  • 代理/VPN的设置不对可能导致 DNS 时好时坏,这个时候记得检查下代理,正常dns的生效都挺快的

相关文档

后语

安装2分钟,文章写了一天,反复的尝试,理论的查询,时间飞逝

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用docker-compose部署Redis集群的步骤: 1.创建一个目录,例如redis-cluster,并在该目录中创建一个docker-compose.yaml文件。 2.在docker-compose.yaml文件中编写以下内容: ```yaml version: '3' services: redis-1: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6379" networks: - redis-cluster redis-2: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6380" networks: - redis-cluster redis-3: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6381" networks: - redis-cluster networks: redis-cluster: driver: bridge ``` 3.在redis-cluster目录中创建一个redis.conf文件,并将以下内容复制到文件中: ```conf bind 0.0.0.0 port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes requirepass 1111 masterauth 1111 ``` 4.在终端中导航到redis-cluster目录,并运行以下命令启动Redis集群: ```shell docker-compose up -d ``` 5.使用以下命令进入redis-1容器: ```shell docker exec -it redis-cluster_redis-1_1 /bin/bash ``` 6.在redis-1容器中,使用以下命令创建Redis集群: ```shell redis-cli --cluster create 172.20.0.2:6379 172.20.0.3:6379 172.20.0.4:6379 --cluster-replicas 0 ``` 7.现在,您已经成功地使用docker-compose部署了Redis集群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值