Begriff
Docker Network
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Container müssen reden. Mit dem Internet (Updates laden). Mit dem Host (Webseite anzeigen). Miteinander (App <-> Datenbank). Docker Network ist das Stecksystem dafür. Du kannst "Kabel ziehen" (virtuell). Standardmäßig steckt jeder Container im "Bridge" Netzwerk. Du kannst aber eigene Netzwerke bauen. Oder Container direkt ans Internet hängen ("Host"). Oder Container verbinden, die auf verschiedenen Servern liegen ("Overlay"). Ohne Netzwerk ist ein Container taubstumm und einsam.
Merksatz: Das Subsystem von Docker, das die Kommunikation zwischen Containern, dem Host und externen Netzwerken über verschiedene Treiber (Bridge, Host, Overlay, Macvlan) steuert.
Ein Host Network entfernt die übliche Container-Netzwerkisolation teilweise und sollte deshalb nur bewusst genutzt werden. Für lokale Preview-Setups ist meist ein benanntes Bridge-Netz mit klar veröffentlichten Ports sicherer.
Das Schweizer Taschenmesser: docker network.
- Listen:
docker network ls. - Inspect:
docker network inspect bridge. (Zeigt IPs aller Container). - Create:
docker network create mein-netz. - Connect:
docker network connect mein-netz laufender-container. (Wie ein Kabel im laufenden Betrieb einstecken!). - Disconnect:
docker network disconnect bridge container.
Praxisroutine
In der Praxis lernst du Docker Network, indem du mit einem kleinen, kontrollierten Beispiel beginnst. Baue zuerst einen Minimalfall, prüfe das Ergebnis, veraendere genau eine Sache und beobachte, was sich ändert. Notiere dir Eingabe, Aktion, Ausgabe und typischen Fehler.
Übung: Erstelle ein Beispiel aus deinem Alltag, fuehre den Ablauf gedanklich Schritt für Schritt durch und markiere die Stelle, an der du Feedback oder ein Log brauchst. Wenn du diese Stelle benennen kannst, verstehst du den Begriff praktisch.
1. CNM vs. CNI
Docker nutzt das CNM (Container Network Model) mit libnetwork.
Kubernetes nutzt CNI (Container Network Interface).
Das ist ein historischer Streit ("Network Wars").
Docker's Modell ist flexibler für Endnutzer (Connect/Disconnect zur Laufzeit möglich).
Kubernetes' Modell ist einfacher für Maschinen (Pod hat 1 IP, fertig).
In Kubernetes werden Docker-Netzwerke oft komplett ignoriert und durch CNI-Plugins (Calico, Flannel) ersetzt.
2. IPAM (IP Address Management)
Wer entscheidet, dass dein Container 172.17.0.2 bekommt?
Der IPAM Driver.
Er verwaltet den Pool (Subnet).
Du kannst ihn zwingen:
docker network create --subnet=192.168.5.0/24 mein-netz.
Wichtig in Firmen-Netzwerken, um Kollisionen mit dem echten LAN zu vermeiden.
3. Overlay Networks (Swarm)
Wenn Container auf zwei verschiedenen Servern laufen, hilft eine Bridge nicht (sie endet am Kabel). Das Overlay Network (VXLAN) spannt einen Tunnel über das echte Netzwerk. Server A verpackt das Container-Paket in ein UDP-Paket, schickt es an Server B. Server B entpackt es. Container A denkt, er wäre im gleichen LAN wie Container B. Erfordert einen Key-Value Store (Consul/Etcd) oder Swarm Mode für die Synchronisation.
Anatomie der Docker Bridge (docker0)
Wenn du Docker auf Linux startest, greift der Docker Daemon tief ins Betriebssystem ein. Er legt das Interface docker0 an. Das ist ein Software-Switch (Virtual Bridge).
Ein gestarteter Container bekommt sein eigenes virtuelles Netzwerk-Interface (eth0). Docker verbindet dieses per veth-pair (Virtual Ethernet Cable) mit der docker0 Bridge.
Tippst du ip link auf deinem Host, siehst du hunderte Interfaces der Sorte veth123abc – das sind die Gegenstücke der freischwebenden Kabel, die in die Container führen.
Die Bridge leitet Pakete zwischen Containern auf Layer 2 (MAC-Adresse) weiter.
Die DOCKER-USER iptables Chain
Die meisten glauben: "Was nicht publiziert (-p 80:80) wird, sieht das Internet nicht." Falsch. Docker hext im Hintergrund extrem mit Linux Netfilter / iptables.
Wenn Docker startet, schreibt es SNAT (Masquerading) Regeln in die iptables, damit Container ins Internet kommen.
Noch tückischer: Docker fügt in der FORWARD Chain Regeln ein, die den normalen ufw (Uncomplicated Firewall) oder firewalld des Hosts umgehen. Das bedeutet: Auch wenn deine Host-Firewall an Port 80 dicht macht, knallt Docker eine Erlaubnis obendrüber, wenn du -p 80:80 benutzt.
Die DOCKER-USER Chain ist der einzige offizielle Ort in iptables, wo Sysadmins eigene Block-Regeln platzieren dürfen, die von Docker respektiert und nicht überschrieben werden.
Overlay Networking & VXLAN-Header
Um Swarm-Knoten zu vernetzen, packt Docker Layer-2 Frames (MAC-Adressiert für den internen Container-Traffic) in normale Layer-4 UDP-Pakete (meist Port 4789). Das nennt sich VXLAN (Virtual eXtensible Local Area Network). Das bedeutet aber Overhead. Jedes Paket bekommt ca. 50 Byte VXLAN-Header angehängt. In High-Bandwidth-Netzwerken (Datenbank-Replikation über Gbit-Links) muss man die MTU der Container-Interfaces reduzieren (z. B. auf 1450), damit die verpackten VXLAN-Pakete nicht die physikalische 1500er Grenze crashen und fragmentieren, was massiven Paketverlust und hohe Latenzen verursachen kann.
Quick-Check
Was ist
noneNetwork?--network none. Der Container hat nur Loopback (lo). Kein Internet, kein LAN. Maximale Isolation. Perfekt für Batch-Jobs, die sensible Daten verarbeiten und nichts leaken dürfen.Hairpin NAT?
Ein Problem, wenn ein Container versucht, seine eigene öffentliche IP anzusprechen. Viele Router blockieren das ("Loopback"). Docker richtet iptables so ein, dass es funktioniert (Hairpin Mode auf der Bridge).Kann ich feste IPs vergeben?
Ja (--ip 172.18.0.22), aber NUR in User-Defined Networks. Im Default-Bridge-Netzwerk ist DHCP (Zufall) erzwungen.