我们在项目中有时会要使用到DNS服务,比如DNS轮询服务、基于DNS搭建高可用的Eureka注册中心等。
那么如何快速搭建一个测试用的DNS服务器呢?答案就是使用Docker来搭建。
Docker Hub 上搜索:Bind,你会看到 sameersbn/bind 超过百万次下下载,144个Star,点击下面的地址进行搜索:
搜索BIND镜像
接下来我们就基于这个镜像来搭建一个测试用的DNS服务器。
一、下载镜像
docker pull sameersbn/bind
下载完成后,我们可以检查一下本地的镜像,可以看到该镜像大小为343MB
docker images
二、创建docker网络
关于docker 的网络模式我这里不做过多的阐述。我们这里会创建一个macvlan网络,可以使容器的IP和宿主机IP在同一个网段。这样就可以直接使用容器IP来访问DNS服务了。
我们先来看一下宿主机的网卡信息:可以看到docker0, enp0s3, lo, virbr0:
其中enp0s3 就是目前宿主机IP对应的网络,接下来我们创建一个macvlan网络:
docker network create -d macvlan --subnet=10.0.10.0/24 --gateway=10.0.10.1 -o parent=enp0s3 appnet
-d 驱动, 这里使用macvlan
--subnet,指定子网
--gateway,指定网关
parent,这里指定宿主机网卡名称
appnet,这是新创建的docker网络名称
docker network ls
docker network inspect appnet
三、运行Bind镜像
首先在宿主机上创建一个Bind的数据目录:
mkdir /app/bind
然后运行bind镜像:
docker run -dit --hostname bind --net=appnet --ip=10.0.10.1 --name bind --restart=always --volume /app/bind:/data sameersbn/bind:latest
这里我们使用--net 指定我们刚刚创建的macvlan网络,使用--ip指定一个IP地址
打开浏览器:https://10.0.10.1:10000,输入默认的用户名:root,密码:password,点击左则菜单的Servers,就可以看到我们的DNS服务器已经运行起来了。