需求

内部服务器使用docker,80多个项目分到不同的tomcat中,项目之间还有相互调用的需要,当然,如果有单独的注册中心,那肯定是没什么问题了。调用是基于内部的域名进行访问的,为每一个tomcat容器配置dns解析也不是不可以,那么多,就很烦躁了,link也无能为力,于是打起了DNS解析的主意。

环境

服务器:
服务器信息
镜像:

有两个,一个是命令行版,一个是带有web配置界面,看个人需求,这里选择第二种,毕竟不一定是我使用。jpillora/dnsmasq

dnsmasq

配置文件

$sudo vim /opt/dnsmasq.conf
# 解析日志
log-queries
no-resolv
# DNS解析服务器地址
server=114.114.114.114 
server=8.8.8.8
server=8.8.4.4
# 定义自己的主机与ip映射
address=/gitlab.congco.com/192.168.9.151
address=/db.keeep.com/192.168.9.100
address=/tbase.keeep.com/192.168.9.123
address=/keeep.com/192.168.9.123 # 解析*.keeep.com

运行容器

docker run \
  --name dnsmasq \
  -d \
  -p 53:53/udp \
  -p 8080:8080 \
  -v /opt/dnsmasq.conf:/etc/dnsmasq.conf \
  --log-opt "max-size=100m" \
  -e "HTTP_USER=admin" \
  -e "HTTP_PASS=admin" \
  --restart always \
  jpillora/dnsmasq

注意:这里可能会有53端口冲突,Ubuntu自有的DNS解析会占用

查看端口占用

sudo netstat -anp | grep 53 #会发现是systemd-resolved服务占用
sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved

解决办法:
How to disable systemd-resolved in Ubuntu?

DNS解析配置

运行成功以后,查看dns解析所在的服务ip

sudo netstat -anp | grep 53

udp        0      0 172.17.0.1:38874        172.17.0.7:53           ESTABLISHED 1025/docker-proxy   
udp        0      0 172.17.0.1:37185        172.17.0.7:53           ESTABLISHED 1025/docker-proxy 

编辑/etc/resolv.conf

sudo vim /etc/resolv.conf
nameserver 127.0.0.1     #必填
nameserver 172.17.0.7   #必填[本机主要网卡]

WEB界面

服务器ip:8080port和上面的运行时参数设置的一致,如果出现占用请自行设置.

nF3kAf.png

验证

修改dockerDNS解析

sudo vim /etc/docker/daemon.json
{
    "dns":["dns服务所在的ip地址"]
}

重启docker服务
Ubuntu

sudo service docker restart

进入容器内部

docker exec -it [容器名称] bash

root@tomcat01:/usr/local/tomcat# ping staticmed.keeep.com

结果:

zc@ns_02:~$ docker exec -it docker_tomcat01_1 bash
root@tomcat01:/usr/local/tomcat# ping tbase.keeep.com
PING tbase.keeep.com (192.168.9.123) 56(84) bytes of data.
64 bytes from 192.168.9.123 (192.168.9.123): icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from 192.168.9.123 (192.168.9.123): icmp_seq=2 ttl=64 time=0.073 ms
64 bytes from 192.168.9.123 (192.168.9.123): icmp_seq=3 ttl=64 time=0.056 ms
64 bytes from 192.168.9.123 (192.168.9.123): icmp_seq=4 ttl=64 time=0.061 ms
64 bytes from 192.168.9.123 (192.168.9.123): icmp_seq=5 ttl=64 time=0.083 ms
64 bytes from 192.168.9.123 (192.168.9.123): icmp_seq=6 ttl=64 time=0.058 ms
^C
--- tbase.keeep.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5097ms
rtt min/avg/max/mdev = 0.047/0.063/0.083/0.011 ms

参考链接:

https://www.jb51.net/article/130332.htm

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐