docker安装配置dnsmasq

docker下载安装

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

docker安装dnsmasq

下载dnsmasq镜像

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

docker pull jpillora/dnsmasq

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

$sudo vim /opt/dnsmasq.conf

配置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

解决53端口占用问题

在启动dnsmasq容器之前,我们需要先检查一下53端口有没有被占用;

lsof -i:53

之后大概会有三种情况:

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

注释dns=dnsmasq
#dns=dnsmasq

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

sudo restart network-manager
  • 无占用,直接运行

运行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。

不带换行的命令

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

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所在的本机主要网卡]
  • windows

在这里插入图片描述

  • macOS
    在这里插入图片描述
  • 移动设备
    在这里插入图片描述
    有的移动设备叫dns,有的叫域名1 域名2。
    注意:上边的截图都是在网上截图的,所以看起来配置的dns地址不太一样,不影响,只需要记住DNS地址必须是安装dnsmasq服务器的IP

扩展-配置docker的DNS

当然如果我们没有其他主机或者设备,那么我们可以直接用dokcer容器来测试,容器其实也是一个完整独立的主机。

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

重启docker

sudo systemctl restart docker

进入启动中的容器内部,随便一个容器即可

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

ping staticmed.keeep.com #上边配置的IP映射的域名

能ping通即表示成功。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值