Zum Hauptinhalt springen

Network


Docker Networking

Docker Networking ermöglicht die Kommunikation zwischen:

  • Container ↔ Container
  • Host ↔ Container
  • Container ↔ Internet

Jeder Container läuft standardmäßig in einem isolierten Netzwerk mit eigener IP.


Standard Netzwerk Verhalten (Out of the Box)

Wenn du einen Container startest:

docker run -d --name nginx nginx

Docker erstellt automatisch:

  • Ein Netzwerk (meist: bridge)
  • Eine interne IP für den Container
  • Internetzugriff (Outbound)

Container können standardmäßig:

  • 🌐 Ins Internet
  • ❌ NICHT direkt vom Host erreichbar (ohne Port Mapping)

Port Mapping (Host → Container)

Damit dein Container vom Host erreichbar ist:

docker run -p 3000:3000 myapp

Format:

<HOST_PORT>:<CONTAINER_PORT>

Beispiel:

  • Host: localhost:3000
  • Container: app:3000

Ohne -p ist der Container von außen nicht erreichbar.


Docker Netzwerk Typen

1. Bridge (Default)

Standard Netzwerk für Container auf einem Host.

docker network ls

Beispiel:

docker run -d --name app1 nginx
docker run -d --name app2 nginx

Im Default-Bridge-Netzwerk:

  • Container können sich per IP erreichen
  • NICHT automatisch per Namen (ohne Custom Network)

2. Custom Bridge Network (Best Practice)

Eigenes Netzwerk erstellen:

docker network create my-network

Container im selben Netzwerk starten:

docker run -d --name app --network my-network nginx
docker run -d --name db --network my-network postgres

Jetzt funktioniert DNS intern: http://db:5432

Vorteile:

  • Container erreichen sich per Name
  • Bessere Isolation
  • Standard in echten Projekten

3. Host Network (Linux)

Container nutzt direkt das Host-Netzwerk.

docker run --network host nginx

Eigenschaften:

  • Kein Port Mapping nötig
  • Höhere Performance
  • Weniger Isolation

⚠️ Nur auf Linux verfügbar (nicht Docker Desktop wie Windows/macOS)


4. None Network (komplette Isolation)

docker run --network none nginx

Eigenschaften:

  • Kein Internet
  • Keine externe Kommunikation
  • Maximale Isolation (Security / Spezialfälle)

Container Kommunikation (Container ↔ Container)

Mit Custom Network (empfohlen)

docker network create app-net

docker run -d --name backend --network app-net my-backend
docker run -d --name frontend --network app-net my-frontend

Frontend kann Backend erreichen über: http://backend:PORT

Wichtig:

  • Service Name = Hostname
  • Kein Port Mapping intern nötig

Netzwerke anzeigen & verwalten

Netzwerke auflisten

docker network ls

Netzwerk inspizieren (sehr hilfreich)

docker network inspect my-network

Zeigt:

  • Verbundene Container
  • IP Adressen
  • Subnet
  • Gateway

Netzwerk löschen

docker network rm my-network

Container mit Netzwerk verbinden (nachträglich)

Container zu Netzwerk hinzufügen:

docker network connect my-network my-container

Container vom Netzwerk Trennen:

docker network disconnect my-network my-container

Sehr praktisch für Debugging.