Maison  >  Article  >  Opération et maintenance  >  Comment implémenter la communication entre Dockers

Comment implémenter la communication entre Dockers

PHPz
PHPzoriginal
2023-04-18 14:07:022797parcourir

Dans le développement de logiciels modernes, Docker est devenu une technologie de virtualisation très populaire, qui permet aux développeurs de développer, tester et déployer dans différents environnements. Une caractéristique importante de Docker est qu'il peut fonctionner sur différents hôtes. La manière de mettre en œuvre la communication entre Dockers dans un environnement multi-hôtes est donc devenue un sujet brûlant.

Cet article présentera comment mettre en œuvre la communication entre différents hôtes Docker, notamment :

  1. Les concepts et caractéristiques des réseaux Docker ;
  2. Les méthodes de communication pour exécuter des conteneurs Docker sur le même hôte ;
  3. Exécuter Docker sur différents hôtes ; méthode ;
  4. Utilisez Docker Compose pour gérer la communication de plusieurs conteneurs.

1. Le concept et les caractéristiques du réseau Docker

Dans Docker, le réseau est un sous-système indépendant qui fournit des capacités de communication pour différents conteneurs. Une caractéristique importante du réseau Docker est d'isoler différents conteneurs dans différents réseaux, et la communication entre les conteneurs doit être réalisée via le réseau. Les types de réseau Docker courants incluent :

  1. mode pont : mode par défaut, tous les conteneurs sont connectés au même réseau virtuel.
  2. Mode hôte : connectez le conteneur directement au réseau physique de l'hôte, et les conteneurs peuvent communiquer via l'adresse IP de l'hôte.
  3. mode de superposition : utilisé pour créer des réseaux virtuels isolés entre plusieurs hôtes Docker, qui peuvent réaliser une communication entre conteneurs entre hôtes.

Dans Docker, la communication entre différents conteneurs peut également être réalisée via des réseaux personnalisés.

2. Méthode de communication des conteneurs Docker s'exécutant sur le même hôte

La communication entre les conteneurs Docker s'exécutant sur le même hôte est la plus simple à réaliser. Par défaut, le réseau Docker Bridge permet la communication entre tous les conteneurs via son adresse IP. Par conséquent, la communication entre différents conteneurs sur le même hôte doit uniquement être effectuée en utilisant l'adresse IP du conteneur.

Dans Docker, vous pouvez utiliser la commande suivante pour afficher l'adresse IP du conteneur en cours d'exécution :

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

L'exemple de code pour la communication entre les conteneurs Docker sur le même hôte est le suivant :

import requests

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

3. Exécutez les conteneurs Docker sur différents hosts Méthode de communication

Lorsque différents conteneurs Docker s'exécutent sur différents hôtes, ils ne peuvent pas communiquer via l'adresse IP du conteneur car ils n'appartiennent plus au même réseau. Il faut donc utiliser d’autres moyens pour communiquer entre eux.

Dans Docker, la communication des conteneurs sur différents hôtes peut être réalisée des deux manières suivantes :

  1. Utilisez le mappage de ports pour mapper le port de l'application sur le port de l'hôte, afin que les conteneurs sur d'autres hôtes puissent utiliser l'adresse IP et le port de l'hôte pour accéder au conteneur.
  2. Utilisez le réseau Overlay pour connecter des conteneurs sur différents hôtes au même réseau virtuel afin qu'ils puissent communiquer directement via l'adresse IP du conteneur.

L'exemple de code pour utiliser le mappage de ports est le suivant :

import requests

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

Lorsque vous utilisez le réseau Overlay pour connecter des conteneurs sur différents hôtes, vous devez effectuer les étapes suivantes :

  1. Activer le mode Swarm sur tous les hôtes Docker : 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. Créez un réseau Overlay sur un hôte Docker : docker network create -d overlay <network_name>;

Démarrez un conteneur dans le réseau Overlay : docker service create - -name <service_name> --network <network_name>

L'exemple de code pour communiquer entre eux dans le réseau Overlay est le suivant :

import requests

response = requests.get('http://<container_ip>:<port>/<api_endpoint>')
4. Utilisez Docker Compose pour gérer la communication de plusieurs conteneurs

Docker Compose est un outil de gestion de plusieurs conteneurs Docker. Fichiers YAML Pour définir les méthodes de démarrage et les paramètres de plusieurs conteneurs. Dans Docker Compose, la méthode de communication entre les conteneurs peut être configurée dans des fichiers YAML.

Ce qui suit est un exemple de code YAML pour gérer la communication entre plusieurs conteneurs à l'aide de 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:
Dans l'exemple ci-dessus, le conteneur de base de données et le conteneur Web sont connectés au même réseau virtuel en définissant un réseau nommé "mon-réseau". et utilisez le mappage de ports pour mapper le port 3306 de MySQL au port 3306 de l'hôte.

Résumé🎜🎜Grâce à l'introduction de cet article, vous devriez maîtriser la méthode de communication entre les différents hôtes Docker. Pour la communication de conteneur sur le même hôte, il vous suffit d'utiliser l'adresse IP du conteneur ; pour la communication de conteneur sur différents hôtes, vous pouvez utiliser les réseaux de mappage de ports et de superposition. De plus, l'utilisation de Docker Compose facilite la gestion de la communication entre plusieurs conteneurs. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn