OneCoder Avatar
OneCodercoderli.com · 938 篇博文
Docker下搭建DNS服务器dnsmasq📷 题解插图

Docker下搭建DNS服务器dnsmasq

📅 2016-04-15·✍️ OneCoder·计算中...·⏱️ 5 分钟
#Docker

为方便Hadoop集群管理,决定利用docker环境手动搭建一个DNS服务器。

1. 配置容器

选择andyshinn/dnsmasq的docker镜像,2.75版本。执行命令

BASH
docker run -d -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN --name dns-server andyshinn/dnsmasq:2.75

本以为顺利完成,结果报错:

docker: Error response from daemon: failed to create endpoint dns-server on network bridge: Error starting userland proxy: listen tcp 0.0.0.0:53: bind: address already in use.

dns服务默认是用的53端口被占用了。查看本机端口占用情况:

BASH
netstat -lnp|grep 53

发现在宿主机器上有一个dnsmasq服务。google一番了解到,原来是ubuntu默认安装了dnsmasq-base服务。官网提到:

Note that the package "dnsmasq" interferes with Network Manager which can use "dnsmasq-base" to provide DHCP services when sharing an internet connection. Therefore, if you use network manager (fine in simple set-ups only), then install dnsmasq-base, but not dnsmasq. If you have a more complicated set-up, uninstall network manager, use dnsmasq, or similar software (bind9, dhcpd, etc), and configure things by hand.

通过kill 停掉该服务。再次执行上述命令,通过

BASH
docker ps

查看,容器启动成功。

2. 配置DNS服务

进入容器

BASH
docker exec -it dns-server /bin/sh

首先配置上行的真正的dns服务器地址,毕竟你只是个本地代理,不了解外部规则。创建文件:

BASH
vi /etc/resolv.dnsmasq

添加内容:

TEXT
nameserver 114.114.114.114
nameserver 8.8.8.8

配置本地解析规则,这才是我们的真实目的。新建配置文件

BASH
vi /etc/dnsmasqhosts

添加解析规则

TEXT
172.20.2.14 master
172.20.2.15 slave15
172.20.2.16 slave16

修改dnsmasq配置文件,指定使用上述两个我们自定义的配置文件

BASH
vi /etc/dnsmasq.conf

修改下述两个配置

TEXT
resolv-file=/etc/resolv.dnsmasq
addn-hosts=/etc/dnsmasqhosts

回到宿主,重启dns-server容器服务。

BASH
docker restart dns-server

通过本机验证

修改本机dns服务器地址:

通过dig命令查看

BASH
dig master

一切如愿。

💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

Python 与数据工程 · 技术实战⏱️ 5 分钟

开发人员应留意的开源软件许可证简介

作为一个Java开发人员,开发中总会依赖很多的项目(jar包),一般来说这些项目大部分都是开源的,但是开源不等于随意使用甚至商用。开源软件都有着自己的许可证,不同的许可证自然约束也是不同的。稍不留神,可能会自讨苦吃。 先引用百度百科的开源软件的定义: <strong<a href="http://baike.baidu...

阅读全文 →
Python 与数据工程 · 技术实战⏱️ 2 分钟

云计算开源产品推荐 - CloudStack项目简介

CloudStack是思杰(Citrix)旗下的一款开源的虚拟化环境管理软件。核心代码用Java开发。CloudStack的目标是成为一个可以部署并管理大量的虚拟机网络资源,具有高可用和扩展性的云计算管理平台。目前已经支持许多主流的虚拟化平台,如:VMware、Oracle VM、KVM、XenServer、Xen。C...

阅读全文 →
Python 与数据工程 · 技术实战⏱️ 13 分钟

OneCoder翻译 每个程序员必知的知识,UniCode和字符集(上)

今天在处理了一个编码的问题,激发了笔者强烈的弄清编码问题的好奇心。遂先有了前面强烈推荐的文章:字符编码介绍 通俗易懂 强烈推荐。下面是上篇文章中提到的延伸阅读里,第一篇文章的翻译。水平有限,各位看官,勉强理解一下,错误之处还望指出。 - 原文地址:<a href="http://www.joelonsoftware.c...

阅读全文 →
OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!