为docker容器提供域名解析服务

Posted

tags:

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

https://www.jianshu.com/p/10a47b59853e

仅列出我用过的几种方式

  • yum方式部署
  • docker方式部署

环境介绍

ip role
172.16.91.222 dns server
172.16.91.166 client
172.16.91.167 client

yum方式部署DNS服务 [物理部署]

具体安装过程如下:

使用下面的命令

yum install -y dnsmasq

打开/etc/hosts文件 ,添加要解析的域名,如

echo "172.16.91.165 lb.guxin.com" >> /etc/hosts

启动dnsmasq服务

service dnsmasq restart

查看dnsmasq服务的状态

service dnsmasq status

注意:
????每次更新/etc/hosts都要重启dnsmasq服务,重新加载/etc/hosts文件,

其他节点(166,167)上的docker,如何访问dns呢?

????需要更新/etc/docker/daemon.json,添加dns键值对 , 如

{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "insecure-registries":["172.16.91.222:80"],
   "dns":["172.16.91.222"]
}

客户端节点,需要重新启动docker服务,从而加载配置文件

systemctl docker restart

?
?

docker 版本的DNS服务器部署

下载镜像

docker pull jpillora/dnsmasq

打标签

docker tag jpillora/dnsmasq 172.16.91.222:80/dns/dnsmasq

push到harbor上

docker push 172.16.91.222:80/dns/dnsmasq

编写配置文件/root/dns/dnsmasq.conf //配置文件位置,根据自己需求存放


#dnsmasq config, for a complete example, see:
#  http://oss.segetech.com/intra/srv/dnsmasq.conf
#dns解析日志
log-queries
#域名与IP映射
address=/lb.guxin.com/172.16.91.165
说明:  
>docker 容器内部 会将lb.guxin.com解析成172.17.205.28
### 编写启动脚本 

#!/bin/bash
docker stop xej-dnsmasq
docker rm xej-dnsmasq

docker run
--name xej-dnsmasq
-d
-p 53:53/udp
-p 6060:8080
-v /root/dns/dnsmasq.conf:/etc/dnsmasq.conf
--log-opt "max-size=100m"
-e "HTTP_USER=admin"
-e "HTTP_PASS=123456"
--restart always
172.16.91.222:80/dns/dnsmasq


### web UI登陆  
    http://172.16.91.222:6060   
    username:admin  
    password:123456    

### 测试  
#### 其他节点(166,167)上的docker,如何访问dns呢?  
????需要更新/etc/docker/daemon.json,添加dns键值对 , 如 

{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries":["172.16.91.222:80"],
"dns":["172.16.91.222"]
}


#### 客户端节点,需要重新启动docker服务,从而加载配置文件  
>systemctl docker restart  

其实,docker部署跟yum部署,都是加载相同的配置文件,可以从日志中观察出来

以上是关于为docker容器提供域名解析服务的主要内容,如果未能解决你的问题,请参考以下文章

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

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

Nginx反向代理docker容器进行域名解析绑定的实现方法

Docker容器修改dns

docker容器域名映射

Dokcer容器内无法域名解析