CodeGym /Kurse /Docker SELF /Verbindung zwischen Containern

Verbindung zwischen Containern

Docker SELF
Level 17 , Lektion 2
Verfügbar

3.1 Grundlagen der bridge-Netzwerk

Das bridge-Netzwerk ist der Standardnetzwerktreiber in Docker und wird verwendet, um ein isoliertes Netzwerk zu erstellen, in dem Container miteinander interagieren können. Dieses Netzwerk ermöglicht es Containern, über IP-Adressen und Hostnamen zu kommunizieren, was eine bequeme Methode zur Organisation der Interaktion zwischen verschiedenen Komponenten von Multi-Container-Anwendungen bietet.

Das bridge-Netzwerk erstellt ein privates internes Netzwerk auf Host-Ebene, das vom externen Netzwerk des Hosts isoliert ist. Container, die mit diesem Netzwerk verbunden sind, können miteinander interagieren, aber ohne Portweiterleitungseinstellungen nicht direkt von außen zugänglich sein.

Automatische Erstellung des bridge-Netzwerks

Standardmäßig erstellt Docker das bridge-Netzwerk während der Installation, und Container, die ohne Angabe eines bestimmten Netzwerks gestartet werden, werden automatisch mit diesem Netzwerk verbunden.

Beispiel zur Erstellung und Nutzung von Containern im bridge-Netzwerk

1. Starten von Containern im bridge-Netzwerk:

In diesem Beispiel starten wir zwei Container: container1 mit Nginx und container2 mit Busybox. Beide Container sind mit dem Standard-bridge-Netzwerk verbunden.

Terminal

docker run -d --name container1 nginx
docker run -d --name container2 busybox sleep 1000

2. Überprüfung der IP-Adressen der Container:

Um die IP-Adressen der Container zu überprüfen, verwende den Befehl docker inspect.

Diese Befehle geben die IP-Adressen der Container aus, die zur Kommunikation zwischen ihnen verwendet werden können.

Terminal

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container2

3. Kommunikation zwischen Containern über IP-Adresse:

Um die Kommunikation zwischen Containern zu prüfen, verwende den ping-Befehl aus dem Container container2, um container1 zu pingen.

Wenn die Container korrekt mit dem bridge-Netzwerk verbunden sind, wird der ping-Befehl erfolgreich sein.

Terminal

docker exec container2 ping -c 4 <IP_ADDRESS_OF_CONTAINER1>

Erklärung: Das bridge-Netzwerk bietet eine einfache Lösung für lokale Anwendungen, bei denen Container miteinander interagieren müssen, während sie vom externen Netzwerk isoliert bleiben. Das Pingen über die IP-Adresse ist eine grundlegende Methode zur Überprüfung der Netzwerkverbindung. Für komplexere Anwendungen kann jedoch die Konfiguration von DNS oder zusätzlichen Netzwerktreibern erforderlich sein.

3.2 Verwendung von Hostnamen

Verwendung von Hostnamen zur Verbindung zwischen Containern

Neben der Verwendung von IP-Adressen ermöglicht Docker auch die Verwendung von Containernamen für die Verbindung zwischen ihnen. Das vereinfacht die Konfiguration, da Container-Namen konstant bleiben, im Gegensatz zu IP-Adressen, die sich beim Neustart der Container ändern können.

Beispiel für Verbindung mit Hostnamen

1. Starten von Containern mit Angabe des Netzwerks bridge:

Terminal

docker run -d --name webserver --network bridge nginx
docker run -d --name appserver --network bridge busybox sleep 1000
    

2. Überprüfung der Verbindung über den Hostnamen:

Verwende den Befehl ping aus dem Container appserver, um webserver anzupingen:

Terminal

docker exec appserver ping -c 4 webserver 
    

Erstellung eines benutzerdefinierten bridge-Netzwerks

Anstelle der Verwendung des Standard-bridge-Netzwerks kannst du ein benutzerdefiniertes bridge-Netzwerk erstellen, um die Interaktion zwischen Containern besser zu kontrollieren.

Beispiel für die Erstellung eines benutzerdefinierten Netzwerks

1. Erstellung eines benutzerdefinierten Netzwerks:

Terminal

docker network create --driver bridge my_bridge_network 
    

2. Starten von Containern im benutzerdefinierten Netzwerk:

Terminal

docker run -d --name webserver --network my_bridge_network nginx
docker run -d --name appserver --network my_bridge_network busybox sleep 1000 
    

3. Überprüfung der Verbindung über den Hostnamen:

Terminal

docker exec appserver ping -c 4 webserver 
    

3.3 Beispiele für mehrere Hosts

Beispiele für praktische Anwendungen

Beispiel 1: Webserver und Datenbank

Erstelle eine Datei docker-compose.yml für den Webserver und die Datenbank:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_bridge_network
        
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    networks:
      - my_bridge_network
        
networks:
  my_bridge_network:
    driver: bridge

Starte Docker Compose:

Terminal


docker compose up -d 

Prüfe die Verbindung zwischen den Containern:

Terminal


docker compose exec web ping -c 4 db 

Beispiel 2: Microservice-Architektur

Erstelle eine Datei docker-compose.yml für die Microservice-Anwendung:

Yaml

version: '3.8'

services:
  frontend:
    image: nginx:latest
    networks:
      - my_bridge_network
        
  backend:
    image: mybackend:latest
    networks:
      - my_bridge_network
        
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    networks:
      - my_bridge_network
        
networks:
  my_bridge_network:
    driver: bridge

Starte Docker Compose:

Terminal

        
docker compose up -d 

Prüfe die Verbindung zwischen den Containern:

Terminal

docker compose exec backend ping -c 4 db

docker compose exec frontend ping -c 4 backend 
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION