Einrichten Von Docker Dnsmasq
Ich versuche zum einrichten einer Andockfenster dnsmasq-container, so dass ich alle meine docker-Containern suchen die domain-Namen, anstatt hartcodierte IPs (wenn Sie auf dem gleichen host). Diese behebt ein Problem mit der Tatsache, dass man kann nicht ändern Sie die Datei /etc/hosts in docker - Container, und dies ermöglicht es mir, einfach zu aktualisieren, alle meine Behälter in einem Arbeitsgang, durch ändern einer einzigen Datei, die dnsmasq-container verweist.
Sieht es aus wie jemand hat bereits getan, die harte Arbeit für mich und erstellt eine dnsmasq-container. Leider ist es nicht "arbeiten" für mich. Schrieb ich ein bash-Skript zu starten Sie den Behälter wie unten gezeigt:
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
Vorher ausgeführt, habe ich die dnsmasq.Gastgeber-Verzeichnis eingefügt und eine einzelne Datei innerhalb es genannt hosts.txt mit folgendem Inhalt:
192.168.1.3 database.mydomain.com
Leider immer wenn ich versuche zu pingen, dass die domain, von der aus Sie innerhalb von:
- der host
- Der dnsmasq container
- ein weiterer container auf dem gleichen host
Erhalte ich immer die ping: unknown host
Fehlermeldung.
Ich habe versucht, starten von dnsmasq container ohne daemon-Modus, so dass ich Debuggen könnte Ihre Leistung, die Sie unten:
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
Ich vermute, dass ich nicht angegeben haben, die -p
parameter korrekt, beim starten der container. Kann jemand mir sagen, was es sein sollte für die anderen docker-Container-lookup des DNS, oder ob das, was ich versuche zu tun, ist eigentlich unmöglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Build-Skript für das Andockfenster dnsmasq-Dienst geändert werden muss, um Bindung zu Ihrem server hat die öffentliche IP -, die in diesem Fall ist 192.168.1.12 auf meine eth0 Schnittstelle
Auf dem host (in diesem Fall ubuntu 12), müssen Sie zum aktualisieren der resolv.conf oder /etc/network/interfaces-Datei so, dass Sie sich registriert haben, Ihre öffentliche IP (eth0 oder eth1-Gerät) als nameserver.
Vielleicht möchten Sie einen sekundären nameserver werden von google, wenn die container nicht ausgeführt wird, indem Sie die Zeile zu
dns-nameservers xxx.xxx.xxx.xxx 8.8.8.8
E. g. es steht kein Komma oder einer anderen Linie.Müssen Sie dann starten Sie Ihren Netzwerk-service
sudo /etc/init.d/networking restart
wenn man aktualisiert die /etc/network/interfaces-Datei so, dass diese auto-updates die /etc/resolve.conf-Datei, die Andockfenster kopieren, um die container während der build.Starten Sie nun alle Ihre Container
sudo docker stop $CONTAINER_ID
sudo docker start $CONTAINER_ID
Dies bewirkt, dass Ihre /etc/resolv.conf-Dateien aktualisieren, damit Sie auf die neue nameserver-Einstellungen.
DNS-lookups in der Sie alle Ihre docker-Container (die Sie gebaut seit den änderungen) sollte nun die Arbeit mit Ihrem dnsmasq-container!
Als Seite beachten, dies bedeutet, dass docker Container auf anderen hosts können auch die Vorteile Ihres dnsmasq-Dienst auf diesem host, solange deren Hosts nameserver-Einstellungen festgelegt ist Nutzung dieser server hat die öffentliche IP.