DockerHub中的 sameersbn/bind 鏡像提供了搭建DNS服務器的功能,本文給出使用該鏡像搭建DNS服務器的例子。node
DNS服務器主機 IP:10.11.150.73 域名:master.open.comweb
客戶端1的 IP:10.11.150.74 域名:node.open.comdocker
客戶端2的 IP:10.11.150.75 域名:node2.open.com瀏覽器
測試環境中7三、7四、75機不能鏈接DockerHub,中起色可鏈接7三、7四、75機和DockerHub。bash
在中起色中下載sameersbn/bind鏡像:服務器
docker pull sameersbn/bind:latest
將鏡像存出爲tar包:測試
docker save -o sameersbn_bind.tar sameersbn:bind
經過scp將tar包複製到73機的/opt/scs/openxxs/目錄下(任意具備讀寫權限的目錄都可):spa
scp sameersbn_bind.tar scs@10.11.150.73:/opt/scs/openxxs/
在73機上將鏡像導入:3d
docker load --input sameersbn_bind.tar
此時在73機上即有了sameersbn/bind的鏡像了:code
在73機運行以下命令新建並啓動容器:
docker run --name='bind' -d -p 53:53/udp -e WEBMIN_ENABLED=false -v /opt/scs/openxxs/bind:/data sameersbn/bind:latest
其中--name是將該容器命名爲bind;-p 開放53:53/udp端口便於其它主機訪問DNS服務器;sameersbn/bind鏡像自己安裝了一個webmin服務,提供瀏覽器界面供用戶配置域名項,本文經過修改配置文件進行DNS設置,所以經過 -e WEBMIN_ENABLED=false 禁用webmin的服務;-v 掛載73主機的/opt/scs/openxxs/bind目錄(也可爲其它目錄),新建容器後將在該目錄下生成bind/ect和bind/lib目錄,其中etc目錄下爲DNS的相關配置文件。
修改7三、7四、75主機的 /etc/resolv.conf 文件,添加以下內容,表示使用73機做爲DNS服務器之一:
nameserver 10.11.150.73
在/opt/scs/openxxs/bind/bind/etc目錄下,打開named.conf文件,內容以下:
可看出DNS的相關配置信息被分爲了named.conf.options、named.conf.local和named.conf.default-zones三個文件。打開named.conf.options文件,修改allow-query 和 allow-transfer 字段爲以下內容,表示容許7三、7四、75機使用73機上的DNS服務。
打開named.conf.local文件,增長正向解析和反向解析(注意每一個zone後面要加上分號):
基於db.local新建正向解析文件forward.open(與named.conf.local中的命名一致):
cp db.local forward.open
內容以下:
基於db.127新建反向解析文件reverse.open(與named.conf.local中的命名一致):
cp db.127 reverse.open
內容以下:
修改了配置文件以後,須要進入bind容器中從新加載配置文件:
docker exec -i -t bind bash
進入bind容器後,裏面的 /etc/bind 目錄對應的就是73主機中的 /opt/scs/openxxs/bind/bind/etc 目錄。先執行以下命令對配置文件的語法進行檢查:
named-checkconf
語法沒有問題後,使用rndc命令從新加載配置信息:
rndc reconfig
若是隻是修改了某個區域的一些條目,則更新該區域便可,以下命令更新了open.com區域:
rndc reload open.com
在73機上測試以下,成功:
在74機上測試以下,成功: