Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So implementieren Sie die Kommunikation zwischen Dockern

So implementieren Sie die Kommunikation zwischen Dockern

PHPz
PHPzOriginal
2023-04-18 14:07:022797Durchsuche

In der modernen Softwareentwicklung hat sich Docker zu einer sehr beliebten Virtualisierungstechnologie entwickelt, die es Entwicklern ermöglicht, in verschiedenen Umgebungen zu entwickeln, zu testen und bereitzustellen. Ein wichtiges Merkmal von Docker besteht darin, dass es auf verschiedenen Hosts ausgeführt werden kann. Daher ist die Implementierung der Kommunikation zwischen Dockern in einer Umgebung mit mehreren Hosts zu einem heißen Thema geworden.

In diesem Artikel wird vorgestellt, wie die Kommunikation zwischen verschiedenen Docker-Hosts implementiert wird, einschließlich:

  1. Die Konzepte und Eigenschaften von Docker-Netzwerken;
  2. Kommunikationsmethoden zum Ausführen von Docker-Containern auf demselben Host;
  3. Ausführen von Docker auf verschiedenen Hosts Containerkommunikation Methode;
  4. Verwenden Sie Docker Compose, um die Kommunikation mehrerer Container zu verwalten.

1. Das Konzept und die Eigenschaften des Docker-Netzwerks

In Docker ist das Netzwerk ein unabhängiges Subsystem, das Kommunikationsfunktionen für verschiedene Container bereitstellt. Ein wichtiges Merkmal des Docker-Netzwerks besteht darin, verschiedene Container in verschiedenen Netzwerken zu isolieren, und die Kommunikation zwischen Containern muss über das Netzwerk erfolgen. Zu den gängigen Docker-Netzwerktypen gehören:

  1. Bridge-Modus: Standardmodus, alle Container sind mit demselben virtuellen Netzwerk verbunden.
  2. Host-Modus: Verbinden Sie den Container direkt mit dem physischen Netzwerk des Hosts, und die Container können über die IP-Adresse des Hosts kommunizieren.
  3. Overlay-Modus: Wird zum Erstellen isolierter virtueller Netzwerke zwischen mehreren Docker-Hosts verwendet, wodurch eine hostübergreifende Containerkommunikation erreicht werden kann.

In Docker kann die Kommunikation zwischen verschiedenen Containern auch über maßgeschneiderte Netzwerke erreicht werden.

2. Kommunikationsmethode von Docker-Containern, die auf demselben Host ausgeführt werden

Die Kommunikation zwischen Docker-Containern, die auf demselben Host ausgeführt werden, ist am einfachsten zu erreichen. Standardmäßig ermöglicht das Docker-Bridge-Netzwerk die Kommunikation zwischen allen Containern über seine IP-Adresse. Daher muss die Kommunikation zwischen verschiedenen Containern auf demselben Host nur über die IP-Adresse des Containers erfolgen.

In Docker können Sie den folgenden Befehl verwenden, um die IP-Adresse des laufenden Containers anzuzeigen:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name>

Der Beispielcode für die Kommunikation zwischen Docker-Containern auf demselben Host lautet wie folgt:

import requests

response = requests.get('http://<container_ip>:<port>/<api_endpoint>')

3. Führen Sie Docker-Container auf verschiedenen aus Hosts Kommunikationsmethode

Wenn verschiedene Docker-Container auf unterschiedlichen Hosts ausgeführt werden, können sie nicht über die IP-Adresse des Containers kommunizieren, da sie nicht mehr zum selben Netzwerk gehören. Daher müssen für die Kommunikation zwischen ihnen andere Mittel eingesetzt werden.

In Docker kann die Containerkommunikation auf verschiedenen Hosts auf die folgenden zwei Arten erreicht werden:

  1. Verwenden Sie Port Mapping, um den Port der Anwendung dem Port des Hosts zuzuordnen, sodass Container auf anderen Hosts die IP-Adresse und den Port des Hosts weitergeben können Zugriff auf den Container.
  2. Verwenden Sie das Overlay-Netzwerk, um Container auf verschiedenen Hosts mit demselben virtuellen Netzwerk zu verbinden, sodass sie direkt über die IP-Adresse des Containers kommunizieren können.

Der Beispielcode für die Verwendung von Port Mapping lautet wie folgt:

import requests

response = requests.get('http://<host_ip>:<mapped_port>/<api_endpoint>')

Wenn Sie das Overlay-Netzwerk verwenden, um Container auf verschiedenen Hosts zu verbinden, müssen Sie die folgenden Schritte ausführen:

  1. Aktivieren Sie den Swarm-Modus auf allen Docker-Hosts: docker swarm init ;docker swarm init
  2. 在一个Docker主机上创建Overlay网络:docker network create -d overlay <network_name>
  3. 在Overlay网络中启动容器:docker service create --name <service_name> --network <network_name> <image_name>
  4. Erstellen Sie ein Overlay-Netzwerk auf einem Docker-Host: docker network create -d overlay <network_name>;

Starten Sie einen Container im Overlay-Netzwerk: docker service create - -name <service_name> --network <network_name>.

Der Beispielcode für die Kommunikation untereinander im Overlay-Netzwerk lautet wie folgt:

import requests

response = requests.get('http://<container_ip>:<port>/<api_endpoint>')
4. Verwenden Sie Docker Compose, um die Kommunikation mehrerer Container zu verwalten.

Docker Compose ist ein Tool zur Verwaltung mehrerer Docker-Container YAML-Dateien Zum Definieren der Startmethoden und Parameter mehrerer Container. In Docker Compose kann die Kommunikationsmethode zwischen Containern in YAML-Dateien konfiguriert werden.

Das Folgende ist ein YAML-Beispielcode für die Verwaltung der Kommunikation zwischen mehreren Containern mit Docker Compose:

version: '3'

services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: 'mydb'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD: 'root'
      MYSQL_ROOT_PASSWORD: 'root'
    volumes:
      - ./db:/var/lib/mysql
    ports:
      - '3306:3306'
    networks:
      - my-network

  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
    networks:
      - my-network
    depends_on:
      - db

networks:
  my-network:
Im obigen Beispiel sind der Datenbankcontainer und der Webcontainer mit demselben virtuellen Netzwerk verbunden, indem ein Netzwerk namens „my-network“ definiert wird. und verwenden Sie Port Mapping, um den 3306-Port von MySQL dem 3306-Port des Hosts zuzuordnen.

Zusammenfassung🎜🎜Durch die Einleitung dieses Artikels sollten Sie die Kommunikationsmethode zwischen verschiedenen Docker-Hosts beherrschen. Für die Containerkommunikation auf demselben Host müssen Sie nur die IP-Adresse des Containers verwenden. Für die Containerkommunikation auf verschiedenen Hosts können Sie Port Mapping- und Overlay-Netzwerke verwenden. Darüber hinaus erleichtert die Verwendung von Docker Compose die Verwaltung der Kommunikation zwischen mehreren Containern. 🎜

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Kommunikation zwischen Dockern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn