DNS ist ein zentraler Bestandteil jeder Container-Umgebung. In Docker-Setups werden Container häufig über Service-Namen anstelle von IP-Adressen angesprochen, wodurch DNS-Resolver, Suchdomänen und Caching eine entscheidende Rolle für Konnektivität und Performance spielen. Dieser Artikel erklärt die Docker-internen DNS-Mechanismen, die Funktionsweise von Resolver-Chains, die Konfiguration von Search Domains und effektive Strategien für Caching und Troubleshooting.
1. Docker interne DNS-Architektur
Docker nutzt einen eingebauten DNS-Server für Container-Netzwerke, der automatisch Service-Namen auf IP-Adressen auflöst. Jeder Container in einem benutzerdefinierten Netzwerk verwendet diesen DNS-Server, während standardmäßige Bridge-Netzwerke die Namensauflösung auf Host-Resolver zurückfallen lassen.
Funktionsweise
- Beim Start erstellt Docker für jedes benutzerdefinierte Netzwerk einen DNS-Server auf
127.0.0.11. - Container fragen zuerst diesen Resolver ab, bevor sie die Host-DNS-Server kontaktieren.
- Der Docker-DNS erkennt Container-Namen, Aliase und Service-Namen in Docker Compose.
docker run -d --name web --network app-net nginx
docker run -it --network app-net --rm busybox nslookup web
Der Resolver gibt die interne IP des Containers zurück.
2. Resolver Chains und /etc/resolv.conf
Jeder Container erhält beim Start eine eigene /etc/resolv.conf, die die Reihenfolge der Resolver definiert:
nameserver 127.0.0.11
options ndots:0
Die ndots-Option beeinflusst, wann FQDNs abgefragt werden. Standardmäßig sorgt Docker dafür, dass interne Container-Namen direkt aufgelöst werden, bevor die Host-DNS-Server kontaktiert werden.
Host Resolver einbeziehen
Wenn der interne Resolver keine Antwort liefert, werden die Nameserver des Hosts als Fallback genutzt. Diese Reihenfolge ist entscheidend für Multi-Environment Setups und Hybrid-Netzwerke:
docker network create
--driver bridge
--dns 8.8.8.8
--subnet 172.20.0.0/16
hybrid-net
3. Search Domains in Compose
Docker Compose erlaubt die Definition von search-Domains, um kurze Service-Namen automatisch aufzulösen:
networks:
app-net:
driver: bridge
ipam:
config:
- subnet: 172.21.0.0/16
driver_opts:
com.docker.network.bridge.name: br-app
dns:
- 127.0.0.11
dns_search:
- example.local
- services.local
Damit kann ein Container db statt db.example.local ansprechen.
4. Caching-Mechanismen
Docker-DNS führt ein internes Cache für schnelle Namensauflösung. Dieses Cache reduziert Latenz und Entlastet Host-Resolver, kann jedoch bei dynamischen Umgebungen zu Stale-Records führen.
Cache invalidieren
Bei Problemen hilft oft ein Neustart des Containers oder das Leeren des DNS-Caches im Container:
docker exec -it web kill -SIGHUP 1
docker restart web
5. Troubleshooting und Debugging
- DNS-Auflösung testen:
docker exec web nslookup db - Reverse Lookup prüfen:
docker exec web getent hosts db - Docker-DNS Logs analysieren:
journalctl -u docker | grep "dns" - IP-Konflikte oder Aliase mit
docker network inspect app-netprüfen
6. Best Practices
- Benutzerdefinierte Netzwerke für Compose Stacks immer verwenden, um isolierte DNS-Resolver zu erhalten.
- Search Domains gezielt setzen, um kurze Namen konsistent aufzulösen.
- Bei dynamischen Diensten TTL und Cache-Verhalten beachten.
- Bei Hybrid- oder Cloud-Setups Host-Resolver korrekt einbinden.
- Monitoring und Logging für DNS aktivieren, um Latency- oder Ausfallprobleme früh zu erkennen.
Fazit
DNS in Docker ist mehrschichtig: interne Resolver, Host-Fallbacks, Search Domains und Caching spielen zusammen. Durch gezielte Konfiguration und Monitoring lassen sich Namensauflösung, Performance und Ausfallsicherheit in Container-Netzwerken optimieren. Compose bietet zusätzliche Möglichkeiten, DNS-Verhalten konsistent über Umgebungen hinweg zu steuern.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











