Docker Compose Netzwerke: Interne Kommunikation sauber trennen

In komplexen Docker-Umgebungen mit mehreren Containern ist es entscheidend, die interne Kommunikation sauber zu trennen. Docker Compose ermöglicht die Definition von benutzerdefinierten Netzwerken, sodass Dienste nur mit den vorgesehenen Containern kommunizieren können. Dies erhöht Sicherheit, Übersichtlichkeit und Wartbarkeit von Multi-Container-Anwendungen.

Grundlagen von Docker Compose Netzwerken

Jeder Docker Compose Stack erstellt standardmäßig ein eigenes Bridge-Netzwerk. Container innerhalb desselben Netzwerks können sich direkt über Container-Namen erreichen. Durch zusätzliche Netzwerke lässt sich die Kommunikation gezielt steuern.

Netzwerktypen

  • Bridge: Standard, isoliert Container vom Host und voneinander getrennt, Kommunikation nur innerhalb des Netzwerks möglich
  • Overlay: Multi-Host-Setups, verschlüsselte Kommunikation über mehrere Hosts
  • Host: Container teilen sich Host-Netzwerk, direkte IP-Zugriffe möglich

Benutzerdefinierte Netzwerke in Docker Compose

Docker Compose erlaubt die explizite Definition von Netzwerken, sodass Dienste nur auf bestimmten Netzwerken laufen und kommunizieren können.

Beispiel: Netzwerk definieren

version: '3'
services:
  web:
    image: nginx
    networks:
      - frontend
  api:
    image: my_api
    networks:
      - frontend
      - backend
  db:
    image: mysql
    networks:
      - backend

networks:
frontend:
backend:

In diesem Beispiel kommuniziert die Web-Anwendung nur mit dem API-Service über das frontend-Netzwerk, während die Datenbank nur über das backend-Netzwerk erreichbar ist.

Vor- und Nachteile der Netzwerktrennung

  • Vorteile: Verbesserte Sicherheit, klare Trennung von Diensten, weniger Risiko von unbeabsichtigtem Zugriff
  • Nachteile: Etwas komplexere Konfiguration, insbesondere bei vielen Diensten

Portfreigaben und interne Kommunikation

Port-Mapping an den Host sollte nur für Dienste erfolgen, die extern erreichbar sein müssen. Interne Dienste kommunizieren ausschließlich über interne Netzwerke.

Beispiel: Nur Web extern zugänglich

services:
  web:
    image: nginx
    ports:
      - "8080:80"
    networks:
      - frontend
  api:
    image: my_api
    networks:
      - frontend
      - backend
  db:
    image: mysql
    networks:
      - backend

Hier ist nur der Web-Service von außen über Port 8080 erreichbar. API und Datenbank bleiben intern.

Netzwerke prüfen und verwalten

Docker Compose erstellt und verwaltet die Netzwerke automatisch. Manuelle Kontrolle ist mit den Docker CLI-Befehlen möglich.

# Alle Netzwerke anzeigen
docker network ls

# Details eines Netzwerks prüfen
docker network inspect 

# Container mit Netzwerkinformationen prüfen
docker inspect 

Best Practices für interne Netzwerke

  • Dienste nur in den Netzwerken verbinden, die sie benötigen
  • Portfreigaben an Host minimieren, nur für öffentliche Dienste
  • Interne APIs über interne Netzwerke kommunizieren lassen
  • Netzwerknamen aussagekräftig wählen (z. B. frontend, backend, db)
  • Overlay-Netzwerke bei Multi-Host-Deployments verwenden
  • Monitoring der Netzwerkauslastung implementieren

Praxisbeispiele

Microservice-Architektur

version: '3'
services:
  frontend:
    image: nginx
    ports:
      - "80:80"
    networks:
      - web_net
  api:
    image: node_api
    networks:
      - web_net
      - db_net
  database:
    image: postgres
    networks:
      - db_net

networks:
web_net:
db_net:

Interner Service ohne externe Freigabe

docker-compose run --rm api curl http://database:5432

Zusammenfassung

Mit Docker Compose Netzwerken lassen sich Container-Dienste sauber trennen und nur die erforderliche Kommunikation zulassen. Durch klare Netzwerkarchitekturen, Minimierung von Portfreigaben und gezielte Nutzung von Frontend- und Backend-Netzwerken können Anwendungen sicherer, übersichtlicher und wartbarer betrieben werden.

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.

Related Articles