Skip to content
BotServBotServ
DockerDNSNetzwerkContainer-Namenaliases

Interne DNS-Namen in Docker

Docker-DNS und interne Namensauflösung. Container-Namen, benutzerdefinierte Netzwerke, aliases und DNS-Troubleshooting.

S

schutzgeist

2 min read
Interne DNS-Namen in Docker

Interne DNS-Namen in Docker

Was dieser Artikel über interne Docker-DNS behandelt

  • Wie Container einander per Namen erreichen.
  • DNS in benutzerdefinierten Netzwerken.
  • Aliases und Netzwerknamen.
  • DNS-Fehler beheben.
  • Verhältnis zur /etc/hosts.

Einleitung: Interne DNS-Namen in Docker

Docker bietet in benutzerdefinierten Netzwerken eine eigene DNS-Auflösung. Container können sich nicht nur per IP, sondern auch über ihren Dienstnamen, ihren Alias oder den Containernamen erreichen. Das macht Compose-Setups deutlich stabiler, denn IPs können sich ändern, Namen bleiben konsistent. Wer interne DNS-Namen versteht, kann Anwendungen ohne hartkodierte IPs betreiben.

Dieser Artikel zeigt, wie Docker-interne DNS funktioniert und wie man sie nutzt.

Wichtige Begriffe

  • Container-Name: Name des Containers im Docker-System.
  • Dienstname: Name in Compose.
  • Alias: Zusätzlicher DNS-Name.
  • Benutzerdefiniertes Netzwerk: Netzwerk mit eingebautem DNS.
  • Default-Bridge: Standardnetz ohne DNS.
  • DNS-Resolver: Dienst, der Namen in IPs auflöst.
  • Hostname: Name, den der Container selbst trägt.

Warum benutzerdefinierte Netzwerke?

In der Default-Bridge müssen Container über IPs kommunizieren. Benutzerdefinierte Netzwerke bringen eingebautes DNS:

docker network create mein-netz
docker run -d --name web --network mein-netz nginx
docker run -d --name app --network mein-netz curlimages/curl curl http://web

web wird automatisch in die IP aufgelöst.

In Compose

services:
  web:
    image: nginx
  app:
    image: curlimages/curl
    command: curl http://web

Compose erstellt automatisch ein Netzwerk, in dem web als DNS-Name verfügbar ist.

Aliases

services:
  db:
    image: postgres
    networks:
      backend:
        aliases:
          - datenbank
          - db-primary

networks:
  backend:

Andere Container können db, datenbank oder db-primary ansprechen.

Hostname festlegen

services:
  app:
    image: mein-app
    hostname: app-1

Im Container ist dann app-1 der eigene Hostname.

DNS prüfen

Innerhalb eines Containers:

nslookup web
nslookup db

Falls nslookup fehlt:

getent hosts web

DNS-Server

Docker verwendet einen internen Resolver. Externe DNS-Server können in Compose gesetzt werden:

services:
  app:
    image: mein-app
    dns:
      - 1.1.1.1
      - 8.8.8.8

Das überschreibt den Container-DNS nur für externe Abfragen.

Mehrere Netzwerke

Ein Container kann in mehreren Netzwerken sein und hat dann mehrere Namen:

services:
  app:
    networks:
      - frontend
      - backend

networks:
  frontend:
  backend:

Andere Container im gleichen Netz erreichen app über den Dienstnamen.

DNS-Probleme

Namen nicht auflösbar

  • Container im gleichen Netz?
  • Rechtschreibung des Dienstnamens prüfen.
  • Compose neu gestartet?

IP hat sich geändert

Das ist normal. Container-Name bleibt stabil, IP nicht.

Externe Namen nicht erreichbar

  • Docker-DNS-Weiterleitung prüfen.
  • dns Option in Compose setzen.
  • Firewall regeln.

Name mit Bindestrich

Docker-DNS unterstützt Bindestriche. Punkte sollten vermieden werden.

Tipps

  • Immer benutzerdefinierte Netze oder Compose verwenden.
  • Klare, eindeutige Dienstnamen wählen.
  • Aliases für Abwärtskompatibilität nutzen.
  • Keine IPs in URLs hinterlegen.
  • DNS im Container testen, wenn Probleme auftreten.
  • Externe DNS separat konfigurieren.

FAQ: Interne Docker-DNS

Können Container sich im Standard-Bridge-Netz per Namen erreichen? Nein, dort gibt es kein eingebautes DNS.

Wie heisst der DNS-Name in Compose? Der Dienstname aus der services:-Sektion.

Was sind Aliases? Zusätzliche Namen für denselben Container im Netzwerk.

Warum ändert sich die IP? Weil Container bei Neustart neue IPs bekommen können.

Kann ich einen eigenen DNS-Server eintragen? Ja, über dns in Compose oder docker run.

Quellen und weiterführende Literatur

Zusammenfassung: Interne DNS-Namen in Docker

Benutzerdefinierte Docker-Netzwerke bieten interne DNS-Auflösung, die Container per Namen erreichbar macht. Compose nutzt diese automatisch, Aliases erlauben zusätzliche Namen und Hostname konfigurieren den internen Rechnernamen. Wer auf klare Namen verzichtet und IPs hartkodiert, macht Setups fragil. Mit Docker-DNS bleiben Verbindungen stabil, selbst wenn sich IPs ändern.

Zurück zum KI Blog
Share:

Ähnliche Beiträge