通过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