簡體   English   中英

設置Docker Dnsmasq

[英]Setting Up Docker Dnsmasq

我正在嘗試設置一個docker dnsmasq容器,以便我可以讓所有的docker容器查找域名,而不是使用硬編碼的IP(如果它們位於同一主機上)。 這解決了一個問題,即無法改變docker容器中的/ etc / hosts文件 ,這使我可以通過更改dnsmasq容器引用的單個文件輕松地一次性更新所有容器。

看起來有人已經為我完成了艱苦的工作並創建了一個dnsmasq容器 不幸的是,它對我來說並不“有效”。 我寫了一個bash腳本來啟動容器,如下所示:

name="dnsmasq_"
timenow=$(date +%s)
name="$name$timenow"

sudo docker run \
-v="$(pwd)/dnsmasq.hosts:/dnsmasq.hosts" \
--name=$name \
-p='127.0.0.1:53:5353/udp' \
-d sroegner/dnsmasq

在運行之前,我創建了dnsmasq.hosts目錄並在其中插入了一個名為hosts.txt的文件,其中包含以下內容:

192.168.1.3 database.mydomain.com

不幸的是,每當我嘗試從內部ping該域時:

  • 主人
  • dnsmasq容器
  • 同一主機上的另一個容器

我總是收到ping: unknown host錯誤消息。

我嘗試啟動沒有守護進程模式的dnsmasq容器,所以我可以調試它的輸出,如下所示:

dnsmasq: started, version 2.59 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n DHCP TFTP conntrack IDN
dnsmasq: reading /etc/resolv.dnsmasq.conf
dnsmasq: using nameserver 8.8.8.8#53
dnsmasq: read /etc/hosts - 7 addresses
dnsmasq: read /dnsmasq.hosts//hosts.txt - 1 addresses

我猜我在啟動容器時沒有正確指定-p參數。 有人可以告訴我其他docker容器應該查找DNS,或者我試圖做的事實際上是不可能的嗎?

需要更改docker dnsmasq服務的構建腳本,以便綁定到服務器的公共IP ,在本例中是eth0接口上的192.168.1.12

#!/bin/bash

NIC="eth0"

name="dnsmasq_"
timenow=$(date +%s)
name="$name$timenow"

MY_IP=$(ifconfig $NIC | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')


sudo docker run \
-v="$(pwd)/dnsmasq.hosts:/dnsmasq.hosts" \
--name=$name \
-p=$MY_IP:53:5353/udp \
-d sroegner/dnsmasq

在主機(在本例中為ubuntu 12)上,您需要更新resolv.conf或/ etc / network / interfaces文件,以便將公共IP(eth0或eth1設備)注冊為名稱服務器。

在此輸入圖像描述

您可能希望在容器未運行時將輔助名稱服務器設置為google,方法是將行更改為dns-nameservers xxx.xxx.xxx.xxx 8.8.8.8例如,沒有逗號或其他行。

然后,如果更新了/ etc / network / interfaces文件,則需要重新啟動網絡服務sudo /etc/init.d/networking restart ,以便自動更新/etc/resolve.conf文件,docker將在此期間復制到容器構建。

現在重新啟動所有容器

  • sudo docker stop $CONTAINER_ID
  • sudo docker start $CONTAINER_ID

這會導致其/etc/resolv.conf文件更新,因此它們指向新的名稱服務器設置。

所有docker容器(自進行更改后構建的)中的DNS查找現在應該可以使用您的dnsmasq容器了!

作為旁注,這意味着其他主機上的 docker容器也可以利用此主機上的dnsmasq服務,只要它們的主機名稱服務器設置設置為使用此服務器的公共IP即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM