Netzwerke
In Docker gibt es mehrere Möglichkeiten, um Container untereinander zu vernetzen und/oder mit der Außenwelt.
Container verbinden
Um Container untereinander auf dem Docker Host zu vernetzen, ist eine Möglichkeit ein eigenes Netzwerk vom Typ Bridge zu erstellen. Dazu kann folgender Befehl genutzt werden.
sudo docker network create mein-netzwerk
Anschließend können Container mit folgendem Befehl zu diesem Netzwerk hinzugefügt werden.
sudo docker network connect mein-netzwerk mein-container
Es können laufende Container zum Netzwerk hinzugefügt werden, hierfür müssen die Container nicht gestoppt werden. Auch das Entfernen funktioniert ohne Container Neustart.
Um einen Container wieder aus einem Netzwerk zu entfernen, kann der folgende Befehl verwendet werden.
sudo docker network disconnect mein-netzwerk mein-container
Wird ein Netzwerk nicht mehr benötigt, lässt es sich mit folgendem Befehl entfernen.
sudo docker network rm mein-netzwerk
Wenn mit Docker Compose Container verwaltet werden, dann wird automatisch immer ein Default Netzwerk erstellt, in das alle Container aus der Compose Konfiguration eingefügt werden. Ausnahme: wenn Container in der Compose Konfiguration explizit einem Netzwerk zugewiesen werden, dann werden diese nicht dem Default Netzwerk zugewiesen.
Compose Container verbinden
Wenn die Container aus verschiedenen Docker Compose Konfigurationen miteinander verbunden werden sollen, dann wird am besten mit den oben genannten Befehlen ein extra Netzwerk erstellt.
Erstellen wir beispielweise das Netzwerk testnet.
sudo docker network create testnet
Anschließend werden die gewünschten Konfigurationen wie folgt ergänzt.
Docker Compose A:
services:
webserver-A:
image: nginx
networks:
- testnet
networks:
testnet:
name: testnet
external: true
Docker Compose B:
services:
webserver-B:
image: nginx
networks:
- testnet
networks:
testnet:
name: testnet
external: true
Anschließend die beiden Konfigurationen neu starten und nun wären Webserver-A und Webserver-B in einem Netzwerk und könnten miteinander über den Docker Socket kommunizieren. Die Kommunikation läuft hierbei im virtuellen Docker Netzwerk ab und verlässt nicht den Host. Dadurch ist diese Verbindung besonders schnell und sicher.
Keine Kommentare