Site icon bintorosoft.com

DNS in Docker: Resolver Chains, Search Domains und Caching

Surreal 3D of a Fox Character Software Developer Standing Next to a Giant Computer Monitor Filled with Lines of Code Holding a Coffee Cup and a Tablet in a Colored Minimalist Background

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

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

6. Best Practices

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:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version