docker 部署 coredns(内部域名解析)

本文介绍如何在内网环境中使用Docker部署CoreDNS服务,实现HTTPS域名的本地解析,并提供两种配置方法:直接在Corefile中定义或通过独立的hosts文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在系统应用中,经常会遇到需要使用 https 域名通讯的需要,在内网中,我们不需要正式在互联网上注册域名,自建一个 dns 服务就能很好的解决问题。

基本应用

本文内网为使用 docker 运行一个 coredns 服务的代码示例:

docker-compose.yml 片段内容如下:

version: '3.7'
services:

  coredns:
    image: coredns/coredns:1.10.0
    container_name: coredns
    ports:
      - 53:53/udp
    volumes:
      - ./coredns/Corefile:/Corefile

脚本中 Corefile 文件内容如下:

.:53 {
    hosts {
        192.168.1.11 test.com
        192.168.1.12 test1.com
        fallthrough
    }
    forward . 8.8.8.8:53 114.114.114.114:53
    log
}

其中 forward 指向上级 dns 服务

独立hosts文件方式

我们还可以将 hosts 独立出来为一个单独的文件,如下所示:

.:53 {
    hosts /etc/coredns/hostsfile {
        fallthrough
    }
    forward . 8.8.8.8:53 114.114.114.114:53
    log
}

其中 /etc/coredns/hostsfile 为内部域名解析映射文件,使用 docker-compose 的话你需要对应挂载出来:

version: '3.7'
services:

  coredns:
    image: coredns/coredns:1.10.0
    container_name: coredns
    ports:
      - 53:53/udp
    volumes:
      - ./coredns/hostsfile:/etc/coredns/hostsfile
      - ./coredns/Corefile:/Corefile

hostsfile 内容示例如下:

192.168.1.11 test.com
192.168.1.12 test1.com

使用

以 Linux 为例,修改配置文件 cat /etc/resolv.conf 设置 nameserver 为运行的这个 dns 服务IP地址即可,如下示例:

[root@localhost /]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.1.2

保持后就可以使用 nslookup 或者 ping 来验证内部域名解析是否正常了。

参考资料:coredns 官网


(END)

安装 Docker DNS,通常是指配置Docker使其能够使用DNS服务,以便容器内的应用可以访问外部网络资源。以下是安装步骤: 1. **确保已安装 Docker**: 首先确保您的系统已经安装了 Docker,可以在命令行输入 `docker --version` 检查版本。 2. **安装 Docker Compose**: 如果你还需要管理多容器应用程序,可以安装 Docker Compose,它简化了容器部署。可以使用 `sudo apt-get install docker-compose` 或者通过包管理器安装。 3. **安装 CoreDNS**: 对于添加 DNS 功能,CoreDNS 是一个流行的选择。你可以从 GitHub (https://github.com/coredns/coredns) 下载最新版本的 CoreDNS,然后解压到本地。 4. **创建 CoreDNS 配置文件**: 创建一个 `coredns.yml` 或类似文件,配置 CoreDNS 的监听地址、域名等信息。例如: ```yaml api: /etc/Corefile server: - { transport: tcp address: :9053 } prometheus: enabled: true ``` 5. **启动 CoreDNS**: 使用 Docker Compose 运行 CoreDNS 容器: ``` docker-compose up -d coredns ``` `-d` 参数让服务在后台运行(daemonized)。 6. **更新 Docker 配置**: 将 Docker 服务指向 CoreDNS 的端口。编辑 `/etc/docker/daemon.json` 文件,添加 DNS 设置: ```json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "10m" }, "cluster-advertise": "IP_ADDRESS_OF_your_HOST:2376", "registry-mirrors": ["https://your-mirror.example.com"], "dns": ["IP_ADDRESS_OF_running_coredns_container"], "iptables": false } ``` 保存并重启 Docker 服务: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` 现在 Docker 应该可以使用你配置的 CoreDNS 提供的 DNS 解析服务了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

catoop

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值