通过docker安装dnsmasq

前言

通常我们通过多台机器搭建集群时,会为每台机器设置hosts文件

比如

vi /etc/hosts

192.168.2.11 node1

192.168.2.12 node2

192.168.2.13 node3

这样的操作每台机器都要做一次, 如果添加了机器 192.168.2.18 node8 那之前的每台都要更新.


对此可以通过dnsmasq快速搭建一个本地dns服务, dnsmasq支持使用hosts文件做解析.

搭建环境

Ubuntu 16.10 IP 192.168.2.100

docker_17

安装

1. 禁用ubuntu的dns

因ubuntu系统自带了dnsmasq 需先禁用

/etc/NetworkManager/NetworkManager.conf

# dns=dnsmasq

restart network-manager

restart docker

2. 设置一个本地hosts文件

cat > /usr/local/graft/cdh_hosts <

3. 拉取镜像

docker pull andyshinn/dnsmasq:2.76

4. 启动镜像

docker run --name dns --cap-add=NET_ADMIN \
-v /usr/local/graft/cdh_hosts:/etc/dnsmasq.hosts \
-p 53:53/tcp -p 53:53/udp \
-d andyshinn/dnsmasq:2.76


5. 进入容器修改参数

docker-enter dns

#编辑dns配置参数

vi /etc/dnsmasq.conf

# 指定dnsmasq默认查询的上游服务器
server=119.29.29.29
server=180.76.76.76
server=4.2.2.2

#对特定域名进行智能路由
server=/cn/114.114.114.114 
server=/taobao.com/114.114.114.114 
server=/taobaocdn.com/114.114.114.114 

#使用之前的hosts文件
addn-hosts=/etc/dnsmasq.hosts


此时修改局域网的其他机器的dns为192.168.2.100

尝试在其他机器 ping node1

posted @ 2017-06-05 20:05  fluffy  阅读(906)  评论(0编辑  收藏  举报