Docker Networks
Docker Networks
Standardmäßig erzeugt Docker 3 Netzwerke.
- bridge network: jeder Container ist hier verbunden - mit -p können Ports zum Host verknüpfen
- host network: entfernt die Isolation zwischen Container und Host - funktioniert auf Linux - kann zu Problemen auf Mac und Windows führen (siehe Dokumentation).
- none network: damit wird das deaktivieren von Netzwerken für Container gemeint
Netzwerk Commands:
docker network..
ls | alle Netzwerke anzeigen
create | neues Netzwerk erstellen
inspect | details über das Netzwerk und
disconnect | einen Container von einem Netzwerk trennen e.g. docker network disconnect customnet containername
connect | einen Container zu einem Netzwerk verbinden
rm | ein Netzwerk entfernen
prune | alle nicht benutzten Netzwerke entfernen
Das Netzwerk untersuchen:
docker network inspect bridge
Damit können wir sehen welche Container sich mit der bridge verbunden haben und deren IP Adresse. Wir können sogar von einem Container zum Anderen über die IP Adresse connection. Zum Beispiel einmal via ping.
docker attach container_name ping -c 2 ip_adresse
Custom Network
Docker Netzwerktreiber:
bridge: erstellt eine privates Netzwerk auf der Host Maschine - Container können untereinander über deren Namen kommunizieren
overlay: kommt bei der Multi-Host Entwicklung zum Einsatz - enthält Load Balancing, IP Adressenmanagement, TLS Verschlüsselung usw.
MACVLAN: ermöglicht die Zuteilung einer MAC Adresse zu einem Container (hilfreich zur Verknüpfung mit Legacy Systemen)
host: entfernt die Isolation zwischen Container und Host (nur auf Linux Maschinen)
none: deaktiviert das Container Netzwerk
Eigenes Netzwerk erstellen:
docker network create customnet
Bei default wird bridge als driver verwendet. Dennoch kann auch das explizit angegeben werden:
docker network create --driver bridge customnet
Einen Container starten wir wie gehabt mit run und definieren mit
--network customnet
das verwendete Netzwerk.
Note: Zwei Container können im Vergleich zur default bridge über eine custom bridge über deren Container Namen kommunizieren und müssen nicht die IP Adresse verwenden.