Introduction
Docker est une plateforme puissante pour la création, le déploiement et l'exécution d'applications dans un environnement conteneurisé. Comprendre comment gérer et tester la communication entre les conteneurs Docker est crucial pour la construction d'applications robustes et évolutives. Ce tutoriel vous guidera à travers le processus de création d'un réseau Docker personnalisé et de test de la communication entre les conteneurs sur le même réseau.
Comprendre les réseaux Docker
Docker fournit un système de réseau intégré qui permet aux conteneurs de communiquer entre eux et avec le monde extérieur. Docker prend en charge plusieurs types de réseaux, notamment :
Réseau Bridge
Le type de réseau par défaut dans Docker est le réseau bridge. Lorsqu'un nouveau conteneur est démarré, il est automatiquement connecté au réseau bridge par défaut, sauf si un autre réseau est spécifié. Les conteneurs sur le même réseau bridge peuvent communiquer entre eux en utilisant leurs noms de conteneur ou leurs adresses IP.
graph LR
A[Hôte] -- Réseau Bridge --> B[Conteneur 1]
A[Hôte] -- Réseau Bridge --> C[Conteneur 2]
B[Conteneur 1] -- Réseau Bridge --> C[Conteneur 2]
Réseau Hôte
Le réseau hôte permet à un conteneur d'utiliser directement la pile réseau de l'hôte, en contournant le réseau Docker. Cela peut être utile pour les applications sensibles aux performances ou lorsque vous avez besoin d'accéder à des ressources réseau spécifiques à l'hôte.
Réseau Overlay
Le réseau overlay est utilisé pour connecter plusieurs daemons Docker ensemble, permettant aux services Swarm de communiquer entre eux. Les réseaux overlay sont généralement utilisés dans un environnement Docker Swarm.
Réseau Personnalisé
En plus des réseaux par défaut, vous pouvez créer vos propres réseaux personnalisés. Les réseaux personnalisés permettent d'isoler les conteneurs les uns des autres et de contrôler la manière dont ils communiquent. Cela est utile pour la construction d'applications multi-niveaux plus complexes.
graph LR
A[Hôte] -- Réseau Personnalisé --> B[Conteneur 1]
A[Hôte] -- Réseau Personnalisé --> C[Conteneur 2]
B[Conteneur 1] -- Réseau Personnalisé --> C[Conteneur 2]
La compréhension des capacités de réseautage de Docker est essentielle pour la construction et la gestion d'applications conteneurisées. Dans la section suivante, nous explorerons comment créer un réseau personnalisé et tester la communication entre les conteneurs sur ce réseau.
Création d'un réseau personnalisé
Pour créer un réseau personnalisé dans Docker, vous pouvez utiliser la commande docker network create. Cette commande vous permet de spécifier le pilote de réseau, le sous-réseau et d'autres options de configuration.
Création d'un réseau Bridge personnalisé
Créons un réseau bridge personnalisé nommé my-network :
docker network create my-network
Vous pouvez vérifier la création du réseau à l'aide de la commande docker network ls :
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5f6 my-network bridge local
Connexion de conteneurs au réseau personnalisé
Maintenant, démarrons deux conteneurs et connectons-les au réseau personnalisé my-network :
## Démarrer le conteneur 1
docker run -d --name container1 --network my-network ubuntu:22.04 sleep infinity
## Démarrer le conteneur 2
docker run -d --name container2 --network my-network ubuntu:22.04 sleep infinity
Vous pouvez inspecter le réseau et voir les conteneurs connectés à l'aide de la commande docker network inspect :
[
{
"Name": "my-network",
"Id": "a1b2c3d4e5f6",
"Created": "2023-04-18T12:34:56.789Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"container1_id": {
"Name": "container1",
"EndpointID": "container1_endpoint_id",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
},
"container2_id": {
"Name": "container2",
"EndpointID": "container2_endpoint_id",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
Maintenant que nous avons créé un réseau personnalisé et connecté des conteneurs à celui-ci, nous pouvons tester la communication entre les conteneurs dans la section suivante.
Test de la communication entre conteneurs
Maintenant que nous avons créé un réseau personnalisé et connecté des conteneurs à celui-ci, nous pouvons tester la communication entre les conteneurs.
Ping entre conteneurs
Commençons par effectuer un ping d'un conteneur vers l'autre :
## Entrez dans le premier conteneur
docker exec -it container1 bash
## Effectuez un ping du second conteneur par son nom
ping -c 4 container2
La sortie devrait montrer que les conteneurs peuvent communiquer entre eux en utilisant leurs noms de conteneur :
PING container2 (172.18.0.3) 56(84) octets de données.
64 octets de container2.my-network (172.18.0.3): icmp_seq=1 ttl=64 temps=0,065 ms
64 octets de container2.my-network (172.18.0.3): icmp_seq=2 ttl=64 temps=0,057 ms
64 octets de container2.my-network (172.18.0.3): icmp_seq=3 ttl=64 temps=0,057 ms
64 octets de container2.my-network (172.18.0.3): icmp_seq=4 ttl=64 temps=0,057 ms
--- Statistiques de ping pour container2 ---
4 paquets transmis, 4 reçus, 0% de perte, temps 3 ms
min/moy/max/écart-type = 0,057/0,059/0,065/0,003 ms
Test de la communication TCP
Vous pouvez également tester la communication TCP entre les conteneurs. Par exemple, vous pouvez exécuter un serveur HTTP simple dans un conteneur et y accéder depuis l'autre conteneur :
## Démarrer un serveur HTTP simple dans le conteneur1
docker exec -it container1 bash
python3 -m http.server 8000
## Dans un autre terminal, accédez au serveur HTTP depuis le conteneur2
docker exec -it container2 bash
curl http://container1:8000
La sortie du deuxième terminal devrait afficher le contenu du serveur HTTP exécuté dans le premier conteneur.
En testant la communication entre les conteneurs sur le même réseau personnalisé, vous pouvez vous assurer que les composants de votre application conteneurisée peuvent interagir correctement les uns avec les autres, ce qui est essentiel pour la construction et le déploiement d'applications complexes et multi-services.
Résumé
Dans ce tutoriel Docker, vous apprendrez à créer un réseau personnalisé, à lancer des conteneurs sur ce réseau et à vérifier la communication entre eux. À la fin de ce guide, vous aurez les connaissances et les compétences nécessaires pour tester la connectivité entre vos conteneurs Docker, garantissant que vos applications peuvent interagir parfaitement les unes avec les autres au sein du même réseau personnalisé.



