构建一个理想的本地CD集群,DNS自然少不了,集群内的主机间通过域名来实现彼此访问,提供服务。有了DNS的支持就方便和干净了很多。比如搭建docker镜像仓库拉取镜像就不需要通过ip作为仓库服务器名,而是直接使用域名访问。
docker pull 192.168.222.154:8082/dnsmasq VS docker pull reg.yourdomain.com/dnsmasq
哪一个更好看,一目了然。
搞个BIND又大又重,只想要个域名解析而已,看到BIND的那些配置就头疼。不过,好在域名解析服务还有好多选择,dnsmasq就是这样一款简单轻量的DNS服务,刚好满足我的需求。dnsmasq官方地址https://wiki.archlinux.org/index.php/dnsmasq
dnsmasq安装
dnsmasq可以采用包安装 比如yum install dnsmasq,另外也可以通过docker容器运行。这里采用的后一种安装方式:
镜像:jpillora/dnsmasq
hub.docker.com上搜索 jpillora/dnsmasq ,地址如下:https://hub.docker.com/r/jpillora/dnsmasq
安装页面上的安装步骤安装即可:
1、创建/opt/dnsmasq.conf文件
#dnsmasq config, for a complete example, see:
#参考下面的url,一个完整的配置文件的例子,包含配置项的说明
# http://oss.segetech.com/intra/srv/dnsmasq.conf
#log all dns queries
log-queries
#log文件的路径,采用docker运行可以将该文件挂载到宿主机本地文件目录
#log-facility=/usr/log/dnsmasq.log
#dont use hosts nameservers
no-resolv
#use cloudflare as default nameservers, prefer 1^4
server=1.0.0.1
server=1.1.1.1
strict-order
#serve all .company queries using a specific nameserver
server=/company/10.0.0.1
#explicitly define host-ip mappings
address=/myhost.company/10.0.0.2
如果没耐心搞这些配置,只需要先创建个 空的 配置文件 touch /opt/dnsmasq.conf
2、运行容器
$ docker run \
--name dnsmasq \
-d \
-p 53:53/udp \
-p 5380:8080 \
-v /opt/dnsmasq.conf:/etc/dnsmasq.conf \
--log-opt "max-size=100m" \
-e "HTTP_USER=foo" \
-e "HTTP_PASS=bar" \
--restart always \
jpillora/dnsmasq
运行容器参数说明:
-p 53:53/udp 映射dns服务 53 udp端口到宿主机
-p 5380:8080 映射web配置服务 5380 端口到宿主机
-v /opt/dnsmasq.conf:/etc/dnsmasq.conf 配置文件
-e "HTTP_USER=foo" web配置管理用户名,可以改成自己的用户名
-e "HTTP_PASS=bar" web配置管理密码,可以改成自己的密码
3、访问web配置管理 http://<docker-host>:5380 使用foo/bar 认证
这里在线编辑的就是dnsmasq.conf配置文件,编辑后点击save按钮即可完成配置更新和服务重启
4、dns客户端配置
在集群中的其他主机修改/etc/resolv.conf
# Generated by NetworkManager
search localdomain
# 这里加入dnsmasq服务ip
nameserver 192.168.222.154
nameserver 192.168.222.2