English English

Docker - Netzwerkkommunikation zwischen Containern

Sie können mehrere Container miteinander verbinden, um direkt über ein dediziertes Netzwerk zu kommunizieren. Dies wird empfohlen, wenn Sie ein System von Mikroservices einrichten und Dienste separat in eigenen Docker-Containern ausführen möchten.

Es ist möglich, in Docker ein virtuelles Netzwerk zu erstellen, das für die Kommunikation zwischen den Docker-Containern verwendet wird. Wir werden hier das Hosting einer CMS-Website (Wordpress wegen seiner Popularität) als Beispiel verwenden.


1. Zuerst müssen wir das virtuelle Netzwerk erstellen

docker network create website_network

In diesem Tutorial hat das Netzwerk den Namen "website_network".

 

2. Testen Sie das neu erstellte Netzwerk (optional)

Sie können das erstellte Netzwerk auch nur für einen Container für Testaufgaben als Beispiel verwenden. Wenn Sie einen Container starten möchten, der mit dem nun erstellten Netzwerk verbunden ist, dann können Sie das mit diesem Befehl tun:

docker run -it --network website_network image_name

Hier ein Beispiel für einen Docker-Container (ohne Namen) mit dem Docker-Bild "image_name".

Wenn Ihr Docker-Container läuft, dann müssen Sie einen anderen Befehl verwenden.

docker network connect website_network my_container

Sie schreiben den Namen des erstellten Netzwerks (mit dem Sie sich verbinden möchten) und dann den Namen des Containers, der mit diesem Netzwerk verbunden werden soll.



3. Verbinden Sie die Docker-Container über dieses erstellte Netzwerk miteinander

Wir erstellen einen Container ("cmswebsite") für die Wordpress Website und einen Container ("mysqldb") für den MySQL Server und die Datenbank.
Diese werden über dieses neu geschaffene Netzwerk "website_network" miteinander verbunden. Sie müssen diesen Befehl genau in dieser Reihenfolge ausführen und der zweite Container muss eine Minute später nach dem ersten Container gestartet werden.

Starten Sie den ersten Container mit einem MySQL Docker-Image.

docker run -d --name mysqldb -e MYSQL_ROOT_PASSWORD=your_mysql_password mysql

 

Starten Sie den zweiten Container mit einem Wordpress Docker-Bild.

docker run -d --name cmswebsite --link mysqldb:mysql -p 10006:80 wordpress

In dieser Reihenfolge müssen die Container gestartet werden, um die Verknüpfung untereinander zu ermöglichen.
"--link" - Dies wird verwendet, um den Container der MySQL-Datenbank mit dem MySQL-Port des Wordpress-Containers zu verbinden. Alle Daten, die an den MySQL-Port im Wordpress-Container gesendet werden, werden an den MySQL-Datenbankcontainer weitergeleitet.
"--p" - Verbinden Sie den Port 80 im Container mit dem Port 10006 auf dem Host-Server. Es entspricht dem Befehl "EXPOSE" in einer Dockerdatei.
"--e" - Führt beim Start dieses Containers SHELL-Befehle aus. Es entspricht dem Befehl "CMD".

Sie können nun über den Port 10006 auf die Wordpress Website zugreifen. Das neu erstellte Netzwerk kann auch auf andere Container erweitert werden.
Dies war ein Beispiel dafür, wie man ein virtuelles Docker-Netzwerk verwendet, um zwei Docker-Container miteinander zu verbinden.

 

Wenn Sie mehrere Docker-Container erstellen möchten, empfiehlt es sich, docker-compose zu verwenden (Datei: docker-compose.yml). Ihre Container werden gruppiert und laufen in einer isolierten Umgebung.

Hier sind einige erweiterte Einstellungen für den Befehl "docker network create":

Docker erstellt eine Brücke als Standard, wenn Sie keinen bestimmten Treibertyp für Ihr Netzwerk definieren.
Hier ein Beispielbefehl zum Erstellen eines Overlay-Netzwerks:

docker network create -d overlay my_network

 

Sie können auch die verwendeten IP-Adressen in Ihrem Docker-Netzwerk definieren.
Das Subnetz, der IP-Adressbereich und die Gateway-IP-Adresse werden mit den Befehlen "--subnet", "--ip-range" und "--gateway" eingestellt:

docker network create --driver=bridge \
  --subnet=172.29.0.0/16 \
  --ip-range=172.29.5.0/24 \
  --gateway=172.29.5.254 \
  my_network

 

Aktivieren Sie IPv6 im Docker-Netzwerk:

docker network create --ipv6=true my_network

 

Weitere Informationen über "docker network":
https://docs.docker.com/engine/reference/commandline/network/

Weitere Informationen über "docker network create":
https://docs.docker.com/engine/reference/commandline/network_create/

Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
Ok