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

330 Dokumentationen verfügbar

Wissensdatenbank

Docker Networking Grundlagen

Zuletzt aktualisiert: 14.07.2026 um 12:29 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

Texterstellung mit KI-Unterstützung

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
LLMs können Fehler machen. Ihre Nachrichten werden an Google Gemini weitergeleitet.
120