1.1 Netzwerk-Treiber Bridge
Netzwerk-Treiber von Docker ermöglichen es Containern, miteinander und mit externen Netzwerken zu kommunizieren. Docker bietet mehrere Netzwerk-Treiber, von denen jeder seine eigenen Besonderheiten hat und für bestimmte Anwendungsfälle geeignet ist. In dieser Vorlesung betrachten wir vier Hauptnetzwerk-Treiber: bridge, host, none und overlay.
Der Netzwerk-Treiber bridge ist der Standardnetzwerk-Treiber in Docker. Er erstellt ein privates internes Netzwerk, in dem Container miteinander kommunizieren können. Dieses Netzwerk ist vom externen Netzwerk des Hosts isoliert.
Besonderheiten:
- Container, die mit dem
bridge
-Netzwerk verbunden sind, können über IP-Adressen miteinander kommunizieren. - Externe Netzwerke können nicht direkt mit Containern im
bridge
-Netzwerk kommunizieren, es sei denn, Port-Weiterleitung ist konfiguriert. - Einfach zu verwenden für lokale Entwicklungs- und Testumgebungen.
Beispiel zur Verwendung:
Wenn ein Container ohne Netzwerkspezifikation erstellt wird, wird er automatisch mit dem bridge
-Netzwerk verbunden.
docker run -d --name my_container nginx
Zur Konfiguration der Port-Weiterleitung wird das Flag -p
verwendet.
docker run -d -p 8080:80 --name my_container nginx
1.2 Netzwerk-Treiber Host
Der Netzwerk-Treiber host
erlaubt dem Container, direkt den Netzwerk-Stack der Host-Maschine zu verwenden. Das bedeutet, dass der Container die gleiche IP-Adresse wie der Host hat und alle Netzwerk-Interfaces des Hosts nutzen kann.
Merkmale:
- Container, die den Netzwerk-Treiber
host
verwenden, arbeiten schneller, da die Overheads für die Netzwerk-Virtualisierung reduziert werden. - Container haben Zugriff auf die gleichen Netzwerk-Interfaces wie der Host, was das Sicherheitsrisiko erhöhen kann.
- Anwendbar für Szenarien, in denen hohe Netzwerkleistung oder spezifische Netzwerk-Konfigurationen erforderlich sind.
Beispiel für Verwendung:
docker run -d --network host --name my_container nginx
1.3 Netzwerk-Treiber None
Der Netzwerk-Treiber none
deaktiviert alle Netzwerk-Funktionalitäten des Containers. Ein Container, der mit dem Netzwerk none verbunden ist, hat keine Netzwerk-Schnittstelle, was ihn vollständig von anderen Containern und Netzwerken isoliert.
Merkmale:
- Komplette Isolation des Containers von allen Netzwerken.
- Nützlich für Container, die kein Netzwerk benötigen, z. B. zum Ausführen von Aufgaben, die nicht netzwerkabhängig sind.
Beispiel für Verwendung:
docker run -d --network none --name my_container busybox
1.4 Netzwerktreiber Overlay
Der Netzwerktreiber overlay
wird verwendet, um ein verteiltes Netzwerk zu erstellen, das mehrere Docker-Hosts umfasst. Dieser Treiber wird häufig in Docker Swarm oder Kubernetes eingesetzt, um die Netzwerkkommunikation zwischen Containern auf verschiedenen Hosts zu gewährleisten.
Eigenschaften:
- Ermöglicht die Kommunikation zwischen Containern auf verschiedenen Hosts.
- Erfordert eine konfigurierte Clusterbildung wie Docker Swarm.
- Erlaubt das Erstellen virtueller Netzwerke über bestehende Netzwerke, wodurch ein hohes Maß an Isolation und Sicherheit gewährleistet wird.
Beispiel für Verwendung:
Um den overlay
-Treiber zu verwenden, muss zunächst ein Docker-Swarm-Cluster erstellt werden.
1. Docker Swarm initialisieren:
docker swarm init
2. Overlay-Netzwerk erstellen:
docker network create -d overlay my_overlay_network
3. Container starten und mit dem overlay
-Netzwerk verbinden:
docker service create --name my_service --network my_overlay_network nginx
1.5 Vergleich von Netzwerk-Treibern
Vergleich verschiedener Netzwerk-Treiber
Netzwerk-Treiber | Isolation | Leistung | Anwendbarkeit | Besonderheiten |
---|---|---|---|---|
bridge | Hoch | Mittel | Lokale Netzwerke | Standardmäßig isoliertes Netzwerk |
host | Niedrig | Hoch | Leistung | Gemeinsamer Netzwerk-Stack mit dem Host |
none | Vollständig | Höchste | Isolation | Vollständige Netzwerktrennung |
overlay | Hoch | Hoch | Verteilte Netzwerke | Kommunikation zwischen Containern auf verschiedenen Hosts |
Verwendung von Netzwerk-Treibern
-
Bridge
: Verwende es für lokale Anwendungen und Tests, wenn Container miteinander interagieren müssen, aber vom externen Netzwerk isoliert sein sollen. -
Host
: Nutze es für Anwendungen, die hohe Netzwerkleistung oder spezielle Netzwerkkonfigurationen erfordern, bei denen Netzwerkisolation nicht die Priorität ist. -
None
: Verwende es für vollständig isolierte Container, die keine Netzwerkintegration benötigen. -
Overlay
: Nutze es für verteilte Anwendungen, die in einem Cluster ausgeführt werden, um die Kommunikation zwischen Containern auf unterschiedlichen Hosts zu ermöglichen.
GO TO FULL VERSION