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. 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 :
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 :
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 :
docker swarm init
;docker swarm init
;docker network create -d overlay <network_name>
;docker service create --name <service_name> --network <network_name> <image_name>
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>
import requests response = requests.get('http://<container_ip>:<port>/<api_endpoint>')
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:
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!