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

Posted catoop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 部署 coredns(内部域名解析)相关的知识,希望对你有一定的参考价值。

在系统应用中,经常会遇到需要使用 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 部署 coredns(内部域名解析)的主要内容,如果未能解决你的问题,请参考以下文章

部署coredns组件

k8s集群coredns无法解析外部域名

k8s集群coredns无法解析外部域名

k8s-部署kube dns及coredns

k8s-部署kube dns及coredns

Kubernetes 0-1 K8S部署coredns