Docker Networking: Container verbinden | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

235 Dokumentationen verfügbar

Wissensdatenbank

Docker Networking Grundlagen

Zuletzt aktualisiert: 20.01.2026 um 10:02 Uhr

Docker Networking: Container verbinden

Docker Networks ermöglichen Kommunikation zwischen Containern. Lernen Sie die verschiedenen Netzwerk-Typen und ihre Verwendung.

Netzwerk-Typen

Typ Beschreibung Verwendung
bridge Standard, isoliertes Netzwerk Container auf einem Host
host Teilt Host-Netzwerk Maximale Performance
none Kein Netzwerk Isolierte Container
overlay Multi-Host Netzwerk Docker Swarm/Cluster
macvlan Eigene MAC-Adresse Legacy-Integration

Bridge Network (Standard)

# Standard Bridge (docker0)
docker run nginx
# Container ist isoliert, nur via Port erreichbar

# Eigenes Bridge Network erstellen
docker network create myapp-network

# Container im Network starten
docker run -d --name web --network myapp-network nginx
docker run -d --name api --network myapp-network node-api

# Container können sich mit Namen ansprechen
# Im "web" Container:
curl http://api:3000  # DNS-Auflösung funktioniert!

Network-Befehle

# Networks auflisten
docker network ls

# Network erstellen
docker network create mynetwork
docker network create --driver bridge --subnet 172.20.0.0/16 mynetwork

# Network Details
docker network inspect mynetwork

# Container mit Network verbinden
docker network connect mynetwork container_name

# Container von Network trennen
docker network disconnect mynetwork container_name

# Network löschen
docker network rm mynetwork

# Ungenutzte Networks aufräumen
docker network prune

Port-Mapping

# Host-Port:Container-Port
docker run -p 8080:80 nginx
# localhost:8080 → Container:80

# Nur localhost (nicht extern erreichbar)
docker run -p 127.0.0.1:8080:80 nginx

# Zufälliger Host-Port
docker run -p 80 nginx
docker port container_name  # Zeigt zugewiesenen Port

# Mehrere Ports
docker run -p 80:80 -p 443:443 nginx

# UDP
docker run -p 53:53/udp dns-server

Docker Compose Networking

# docker-compose.yml
version: '3.8'

services:
  web:
    image: nginx
    networks:
      - frontend
    ports:
      - "80:80"

  api:
    image: node:20
    networks:
      - frontend
      - backend
    # Erreichbar als "api" von web und db

  db:
    image: postgres
    networks:
      - backend
    # Nur von api erreichbar, nicht von web

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge
    internal: true  # Kein Internetzugang

Service Discovery

# Docker's eingebautes DNS

# Container-Name als Hostname
docker run --name mydb postgres
docker run --link mydb:db app  # Veraltet!

# Besser: Eigenes Network
docker network create app-net
docker run -d --name db --network app-net postgres
docker run -d --name app --network app-net myapp

# Im "app" Container:
# db ist auflösbar: ping db
# Environment variabel für Verbindung:
# DATABASE_HOST=db

# docker-compose: Service-Namen sind automatisch DNS-Namen
services:
  db:
    image: postgres
  app:
    image: myapp
    environment:
      - DATABASE_HOST=db  # Funktioniert automatisch!

Host Network

# Container nutzt Host-Netzwerk direkt
docker run --network host nginx

# Vorteile:
# - Keine NAT-Overhead
# - Maximale Performance

# Nachteile:
# - Keine Port-Isolation
# - Port-Konflikte möglich
# - Funktioniert nicht auf Mac/Windows (nur Linux)

Overlay Network (Swarm)

# Für Multi-Host Kommunikation
docker swarm init

# Overlay Network erstellen
docker network create --driver overlay --attachable myoverlay

# Service im Overlay
docker service create --name web --network myoverlay nginx

# Auch für Standalone Container (--attachable)
docker run --network myoverlay myapp

Network Debugging

# Container IP anzeigen
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name

# Netzwerk-Verbindungen im Container
docker exec container_name netstat -tulpn

# DNS testen
docker exec container_name nslookup other_container

# Connectivity testen
docker exec container_name ping other_container
docker exec container_name curl http://other_container:port

# Network Traffic analysieren
docker run --net=container:target_container nicolaka/netshoot tcpdump

Sicherheit

# Isolierte Backend-Netzwerke
networks:
  public:
    driver: bridge
  private:
    driver: bridge
    internal: true  # Kein Internet!

# Nur notwendige Ports exponieren
services:
  db:
    networks:
      - private
    # Keine ports: → nicht von außen erreichbar

  api:
    networks:
      - public
      - private
    ports:
      - "3000:3000"  # Nur API exponiert
💡 Tipp: Nutzen Sie interne Netzwerke für Datenbanken und andere Services die nicht extern erreichbar sein müssen. Das erhöht die Sicherheit.

Weitere Informationen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120