docker安装配置dnsmasq

docker下载安装
参考:docker安装、卸载、配置、镜像
如果是低版本的额ubuntu,比如ubuntu16.04.7 LTS,为了加快下载速度,参考:Ubuntu16.04LTS安装Docker。

docker安装dnsmasq
下载dnsmasq镜像
首先镜像我们可以选择带web页面的,也可选择不带的,这里选择带web也免的,方便不懂技术的人配置。

docker pull jpillora/dnsmasq
1
提前创建docker容器【dnsmasq】的外部挂载文件,避免频繁进入容器内部;

$sudo vim /opt/dnsmasq.conf
1
配置dnsmasq
# 解析日志
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
1
2
3
4
5
6
7
8
9
10
11
12
解决53端口占用问题
在启动dnsmasq容器之前,我们需要先检查一下53端口有没有被占用;

lsof -i:53
1
之后大概会有三种情况:

提示被systemd-resolved服务占用,解决办法:
sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved
1
2
提示被系统自带的dnsmasq占用,解决办法:
vim /etc/NetworkManager/NetworkManager.conf

注释dns=dnsmasq
#dns=dnsmasq

然后保存,最后重启network-manager即可

sudo restart network-manager
1
2
3
4
5
6
7
8
无占用,直接运行
运行dnsmasq容器
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

其中HTTP_USER和HTTP_PASS代表之后登录dns的web管理页面需要用到的账号密码,可自定义。
8080端口代表web的访问地址端口,可自定义前边的8080。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
不带换行的命令

docker run --name dnsmasq -d -p 53:53/udp -p 8080:8080 -v /dnsmasq.conf:/etc/dnsmasq.conf --log-opt "max-size=100m" -e "HTTP_USER=admin" -e "HTTP_PASS=123456" --restart always jpillora/dnsmasq
1
web管理页面
输入IP 端口即可打开页面,比如:10.109.2.8:8080,这个IP就是装有dnsmasq的主机地址,端口就是前边启动dnsmasq容器所映射的web端口。


测试
之后其他的主机或者移动设备,都可以将本地的dns配置成刚才安装dnsmasq的主机地址了;
比如:

Linux
vim /etc/resolv.conf
nameserver 127.0.0.1 #必填
nameserver 172.17.0.7 #必填[dns所在的本机主要网卡]
1
2
3
windows


macOS

移动设备

有的移动设备叫dns,有的叫域名1 域名2。
注意:上边的截图都是在网上截图的,所以看起来配置的dns地址不太一样,不影响,只需要记住DNS地址必须是安装dnsmasq服务器的IP
扩展-配置docker的DNS
当然如果我们没有其他主机或者设备,那么我们可以直接用dokcer容器来测试,容器其实也是一个完整独立的主机。

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

sudo systemctl restart docker
1
进入启动中的容器内部,随便一个容器即可

docker exec -it [容器名称] bash #不同系统不同容器可能进入命令不一样

ping staticmed.keeep.com #上边配置的IP映射的域名
1
2
3
能ping通即表示成功。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/zwjzone/article/details/136797061

 

 

文章来源https://blog.csdn.net/zwjzone/article/details/136797061

posted @ 2024-11-07 16:20  愤怒的码农  阅读(24)  评论(0编辑  收藏  举报